読者です 読者をやめる 読者になる 読者になる

S2Remotingサンプル実装改造(その2)

S2

引き続き。

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