クライアントが動かない(Axis2編)

ServiceMix 上の Webサービスにアクセスするクライアントをどう作るかを調査中。次は Axis2 を試してみた。

  1. wsdl2java でスタブを生成
  2. Axis2付属のquickstartサンプルを改造してクライアントクラス作成
  3. 実行

すると

Exception in thread "main" org.apache.axis2.AxisFault: Transport level information does not match with SOAP Message namespace URI
	at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
	at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:90)
	at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
	at servicemix.sample.foo.FooServiceStub.sayHello(FooServiceStub.java:172)
	at servicemix.sample.foo.FooServiceClient.main(FooServiceClient.java:12)
Caused by: org.apache.axiom.soap.SOAPProcessingException: Transport level information does not match with SOAP Message namespace URI
	at org.apache.axis2.builder.BuilderUtil.validateSOAPVersion(BuilderUtil.java:761)
	at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:55)
	at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:164)
	at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:112)
	at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:88)
	... 6 more

というエラーが発生。

「Transport level information does not match with SOAP Message namespace URI」というキーワードで検索すると、どうも SOAP バージョン不一致っぽいんだけど、よくわからない。

追記:
どうも、ServiceMix が返す Content-Type に問題があるっぽい。
application/soap+xml であるべきところが text/xml になってる。
うーん。wsdl2java を使わない方法ってあるのかな。