[Seasar-user:11911] Re: [S2Axis2]Webサービス呼び出し時にコンポーネント名をPOST先に付与しないようにするには?

Takafumi Yoshida [E-MAIL ADDRESS DELETED]
2007年 12月 5日 (水) 11:06:05 JST


吉田@オプティクスです。
たかのりさん、小林 (koichik)さん、お世話になります。

お二人のアドバイスを元に、以下のようにしてみました。

・POST先について
小林 (koichik)さんのアドバイスから、diconファイルを以下のように設定しました。

	<component name="connector"
class="org.seasar.remoting.axis2.connector.AxisInOutConnector">
	    <property name="baseURL">
	        new java.net.URL("http://localhost:9090/luckystarWeb/")
	    </property>
	</component>

..略	

	<!-- Webサービスのプロキシ -->
	<component name="Service.asmx" class="test.proxy.HelloWorld">
	    <aspect>remoting</aspect>
	</component>

上記の設定でPOST先は
http://localhost:9090/luckystarWeb/Service.asmx
になりました。

・SOAPActionについて
まず.NET側のメソッドを小文字で始まるよう(helloWorld)に修正し、メソッドに
[SoapDocumentMethod(Action = "urn:helloWorld")]
と属性を付与して、
SOAPAction: "urn:helloWorld"
で該当のメソッドが呼び出されるよう設定。
このあたりについては、以下のURLを参考にしました。
http://www.microsoft.com/japan/msdn/webservices/general/howwebmeth.aspx


以上のようにしてS2Axis2側から呼び出してみましたが、今度は
HTTP/1.1 400 Bad Request
が返ってくるようです。

これはおそらくKeep-Aliveで呼び出す必要があるんだと考えています。
というのも、.NETクライアントからの呼び出しと比較した場合に、.NETクライアントでは
いったんHTTP 100 Continueが返り、その後SOAPメッセージの実体が返って
きているからです。

たかのりさんの言うように、Connectorを独自に実装するしかないのかなと思っていますが
AbstractRPCConnectorから実装すればよいでしょうか?

以上、宜しくお願いいたします。


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