[Seasar-user:4954] [S2Axis2] 転送設定について
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2006年 10月 28日 (土) 02:17:11 JST
関です。
[Client] → [ProxyServer] → [ProcessServer]
となっているサーバー構成で、ClientのAxisServiceの実行時に
[Client]で引数にいれたDto配列が、[ProxyServer]を経由して
[ProcessServer]で受け取った時にnullとなってしまいます。
(配列の中身がnullではなく、配列自体がnull)
確認はできていませんがProxyServerで渡す時に既にnullになっているかもしれません。
内部的にどのようになっているのかは全く理解していないのですが、
S2Axis2を修正することは可能でしょうか?
また、S2Axisでも同様でしょうか?
よろしくお願いします。
■S2Axis2の問題と思う理由
S2Axis2自体が正しく動作していることを確認するために
s2-axis-client.diconの
<arg>"http://***.***.***.***:8080/s2axis2-examples/services/"</arg>
の値を変更して直接[ProcessServer]に接続したところ
1.[Client] → [ProcessServer]
2.[ProxyServer] → [ProcessServer]
両方のパターンは想定どおりにHogeDtoの配列が渡されており
[ProcessServer]にてHogeDtoの値を参照することができます。
以下、試してみたサンプルの一部です。
ベースは、<https://www.seasar.org/svn/s2axis/trunk/s2axis2-examples>
をチェックアウトしたバージョン(92)を使用しています。
■[Client]
■■クライアントの実装 (EchoTest.java)
------------------------------------------------------------------------
public void testEcho() {
Echo service = (Echo) getComponent(Echo.class);
int id = 1;
String msg = "echo message";
String expect = "[id = " + id + "] " + msg;
HogeDto[] args = {new HogeDto("a"),new HogeDto("b"),new HogeDto("c")};
String result = service.echo(id, msg, args);
assertEquals(expect, result);
System.out.println(result);
}
########################################################################
■■リモート呼び出し用dicon (s2-axis-client.dicon)
------------------------------------------------------------------------
(サンプルの s2-axis-client.dicon そのまま)
########################################################################
■■Axisサービスインターフェース(Echo.java)
------------------------------------------------------------------------
public interface Echo {
String echo(int id, String message, HogeDto[] arg);
}
########################################################################
■[ProxyServer]
■■dicon設定 (Deploy.dicon)
------------------------------------------------------------------------
<include path="s2-axis-client.dicon"/>
<component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
<!-- 転送 -->
<component name="Echo" class="org.seasar.remoting.axis2.examples.ex01.Echo">
<aspect>traceInterceptor</aspect>
<aspect>ioRemoting</aspect>
<meta name="axis-service"/>
</component>
########################################################################
■■リモート呼び出し用dicon(s2-axis-client.dicon)
------------------------------------------------------------------------
(Clientと同じくサンプルの s2-axis-client.dicon そのまま)
########################################################################
■[ProcessServer]
■■dicon設定 (Deploy.dicon)
------------------------------------------------------------------------
<include path="s2-axis-client.dicon"/>
<component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
<!-- 処理 -->
<component name="Echo" class="org.seasar.remoting.axis2.examples.ex01.EchoImpl">
<aspect>traceInterceptor</aspect>
<meta name="axis-service"/>
</component>
########################################################################
■■処理の実装 (EchoImpl.java)
------------------------------------------------------------------------
public class EchoImpl implements Echo {
public String echo(int id, String message, HogeDto[] args) {
return "[id = " + id + "] " + message;
}
}
########################################################################
以上。
Seasar-user メーリングリストの案内