S2Remotingサンプル実装改造(その2)
引き続き。
8. ServerMainの変更
Adaptorインタフェースとその実装クラスの変更に合わせて、こちらも修正する。
package examples.remoting; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.factory.S2ContainerFactory; import sample.seasar.remoting.Adaptor; /** * @author murata */ public class ServerMain { public static void main(String[] args) { S2Container container = S2ContainerFactory .create("examples/remoting/server.dicon"); Adaptor adaptor = (Adaptor) container .getComponent(sample.seasar.remoting.impl.RmiAdaptorImpl.class); try { adaptor.setup(); } catch (Exception e) { e.printStackTrace(); } } }
9. server.dicon
ポート設定できるようにしたので、合わせて変更。
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN" "http://www.seasar.org/dtd/components.dtd"> <components> <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/> <component name="traceThrowsInterceptor" class="org.seasar.framework.aop.interceptors.TraceThrowsInterceptor"/> <component name="hello" class="examples.remoting.HelloImpl"> <aspect>traceInterceptor</aspect> </component> <component class="sample.seasar.remoting.impl.RmiAdaptorImpl"> <property name="port">1108</property> <aspect>traceInterceptor</aspect> <aspect>traceThrowsInterceptor</aspect> </component> </components>
10. client.dicon
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN" "http://www.seasar.org/dtd/components.dtd"> <components> <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/> <component name="traceThrowsInterceptor" class="org.seasar.framework.aop.interceptors.TraceThrowsInterceptor"/> <component name="rmiConnector" class="sample.seasar.remoting.impl.RmiConnectorImpl"> <initMethod name="addURL"> <arg>'rmi://localhost:1108'</arg> </initMethod> <aspect>traceInterceptor</aspect> </component> <component class="examples.remoting.Hello"> <aspect>traceInterceptor</aspect> <aspect>traceThrowsInterceptor</aspect> <aspect> <component class="sample.seasar.remoting.interceptor.S2RemotingInterceptor"> <property name="connector">rmiConnector</property> <property name="componentName">'hello'</property> </component> </aspect> </component> </components>
11. rmicの実行
>rmic sample.seasar.remoting.impl.RemoteMethodInvokerImpl
12. 実行
rmiregistryを実行する。
>rmiregistry 1108
サーバ側の実行。サーバ側のコンソールは以下の通り。
DEBUG 2004-11-21 16:10:54,711 [main] BEGIN sample.seasar.remoting.impl.RmiAdaptorImpl#setup() DEBUG 2004-11-21 16:10:55,022 [main] END sample.seasar.remoting.impl.RmiAdaptorImpl#setup() : null DEBUG 2004-11-21 16:11:01,761 [RMI TCP Connection(2)-x.x.x.x] BEGIN sample.seasar.remoting.impl.RmiAdaptorImpl#invoke(hello, say, [Ljava.lang.Object;@7109c4) DEBUG 2004-11-21 16:11:01,821 [RMI TCP Connection(2)-x.x.x.x] BEGIN examples.remoting.HelloImpl#say() DEBUG 2004-11-21 16:11:01,831 [RMI TCP Connection(2)-x.x.x.x] END examples.remoting.HelloImpl#say() : Hello DEBUG 2004-11-21 16:11:01,831 [RMI TCP Connection(2)-x.x.x.x] END sample.seasar.remoting.impl.RmiAdaptorImpl#invoke(hello, say, [Ljava.lang.Object;@7109c4) : Hello
クライアント側の実行。クライアント側のコンソールは以下の通り。
DEBUG 2004-11-21 16:11:01,751 [main] BEGIN examples.remoting.Hello#say() DEBUG 2004-11-21 16:11:01,761 [main] BEGIN sample.seasar.remoting.impl.RmiConnectorImpl#invoke(hello, say, [Ljava.lang.Object;@1581593) DEBUG 2004-11-21 16:11:01,831 [main] END sample.seasar.remoting.impl.RmiConnectorImpl#invoke(hello, say, [Ljava.lang.Object;@1581593) : Hello DEBUG 2004-11-21 16:11:01,831 [main] END examples.remoting.Hello#say() : Hello Hello