クライアントが動かない(Axis2編)
ServiceMix 上の Webサービスにアクセスするクライアントをどう作るかを調査中。次は Axis2 を試してみた。
- wsdl2java でスタブを生成
- Axis2付属のquickstartサンプルを改造してクライアントクラス作成
- 実行
すると
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 を使わない方法ってあるのかな。