[Seasar-user:11125] Re: S2RMIを用いたコールバック登録

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 10月 19日 (金) 02:00:18 JST


小林 (koichik) です.

Date:    Thu, 18 Oct 2007 23:47:34 +0900
From:    歌舞伎モモ <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11123] Re: S2RMIを用いたコールバック登録

> S2RMIを用いず、
> 以下を参考に作成したRMIのコールバック登録は実現できたのですが、
> なぜか、S2RMIだと・・・

まず,S2RMI のサンプルとしてちゃんと動かしてから
コールバックを組み込むのが良かったのではないかと
思います.
よく見てみたら,[Seasar-user:11090] に添付された
コードでは S2RMI としてちゃんと動きません.

> @ServerMain.java
> public class ServerMain {
>     
>     public static void main(String[] args) {
>         S2Container container = 
>             S2ContainerFactory.create("server.dicon");
>         container.init();
>     }
> }

S2RMI のサーバ側は S2RMI の配布ファイルに
含まれている s2rmi-examples-server を参考に
してほしいのですが,次のようになります.

    public static void main(String[] args) {
        GenericS2ContainerInitializer initializer = new GenericS2ContainerInitializer();
        initializer.setConfigPath("server.dicon");
        initializer.initialize();
    }

> @ServiceImpl.java
> public class ServiceImpl extends UnicastRemoteObject implements Service 
> {

S2RMI では,リモートオブジェクトは RMI の
リモートオブジェクトとして実装する必要は
ありません.POJO として実装してください.
詳細は以下のアーキテクチャを参照してください.

http://s2rmi.seasar.org/ja/user_guide/abstraction.html

> -----------------------------------
> Client側設定ファイル(client.dicon)
> -----------------------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
>   "http://www.seasar.org/dtd/components24.dtd">
> <components>
>   <component name="Service"
>       class="server.ServiceImpl">
>     <aspect>remotingInterceptor</aspect>
>   </component>

サービスの実装を登録してはいけません.
これのせいで,実際にはサーバ側の
ServiceImpl ではなく,クライアント側の
(ローカルの) ServiceImple が呼び出されて
しまっています.
前述のアーキテクチャを参照してください.

  <component name="Service"
      class="server.Service">
    <aspect>remotingInterceptor</aspect>
  </component>


以上の修正でサーバ側の ServiceImpl が
きちんと呼び出されるようになりました.
コールバックは試していませんが,それは
S2RMI とは基本的に関係がないのでそちらで
頑張ってみてください.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




Seasar-user メーリングリストの案内