Remoting
id:koichik さんへ
S2OpenAMFもRemoting一族の仲間ではないでしょうか?
よくわかってないので、はずしているかもしれませんが。
・・・で、さすがに、わからずに書くのもどうかと思ったので、ダウンロードしてチラッと見てみました。
ちがう、ようにも思える。どうなんだろう?
俺のバカ
Interfaceにコンストラクタは書けないですね。
ということで、前言は撤回します。プロパティのほうが良さそうですね。
こうなると、やっぱりSpringを参考にするといいのかなぁ。
あと、S2HessianやS2XmlRpcで、抽象でないメソッドをリモート呼び出ししているのは、深い意図があったわけではなく、サービスインターフェースに無いメソッドは「呼ぶな!」というスタンスだったからです。
が、さすがにそれはどうかと思うので、次のバージョンまでに、抽象で無いメソッドはローカルのメソッドを呼ぶようにします。
toStringとかは、Interceptorで気の利いた文字列を作ってあげたほうがいいのかなぁ。
Remoting
S2HessianのClientInterceptorのコードは、僕が書いたのがベースになってると思うので、そのときの意図を説明させてもらうと、サービスのURIをプロパティで指定するようにしているのはSpringを意識しています。
Springでは、
RemoteAccessor (抽象クラス) UrlBasedRemoteAccessor (抽象クラス) HessianClientInterceptor (各プロトコルごとの具象クラス)
のような継承関係になっていて、S2でもいずれはそんな感じになればいいなぁ、と思いそんなふうにしました。
が、S2XmlRpcを書いているときに、サービスのURIをプロパティで設定する必要があるのか、という疑問にかられ、コンストラクタで設定するように変更しました。
Springの場合、FactoryBeanを使ってどうのこうのしているみたいなのですが、S2の場合普通にInterceptorで書けるので、diconファイル以外でサービスのURIを設定することは無いだろう、と思ったからです。
というわけで、今は、どちらかというとコンストラクタで設定するほうがよいように思っています。確信はありませんが。
あと、クライアントのAPIは、イメージ的には、
package org.seasar.remoting; public interface RemoteInvocationInterceptor { public RemoteInvocationInterceptor(String uri); public RemoteInvocationInterceptor(String uri, String id, String pwd); public Object invoke(MethodInvocation invocation); }
みたいなのがあって、各プロトコルごとに上のInterfaceを実装する、と。
まあ、上のは今考えたので、もうちょっと練らないといけないでしょうけど。
・・・S2Axis、あまり追いかけてませんでした。
いまざっと見てみたのですが、ちょっと合わないですねぇ。
もうちょっと考えてから出直してきます。
『トランプ殺人事件』 竹本健治
傑作。
ゲーム3部作はこの作品のためにあったと思わせられる。
結局、物語中で語られなかった部分に、この作品の魅力が詰まっている。
語られていない物語にこれほど惹かれるとは。
『将棋殺人事件』 竹本健治
ふうむ、よくわからなかった。
実験的な手法が、ぎりぎりエンターテイメントに届かなかったような印象。
ストーリーにも結末にも、全面的にはうなずけないものがある。
『囲碁殺人事件』 竹本健治
少なくとも謎に対する強烈な興味と探究心を抱いたときから、人は誰でもひとりの探偵になるのだから。
良質な佳作。
端々の言葉のきらめきはさすがか。