Webサービスの実装のためにTomcat+Axis2 + POJOを使用していますが、POJOとAxis2でいくつかの問題が発生しました。SOAP解析のAxis2およびPOJO実装は、XML要素の名前を無視し、SOAPメッセージ内のXML要素の順序に従って引数に値を割り当てるだけのようです。これは、複雑なAPIで多くの問題を引き起こします。
Axis2のドキュメントの沼地で泳いだ後、私は入って来たよりも混乱していたので、本当に助けが必要です。
JAX-WSとAxis2にはこれらの問題がないことは理解していますが(間違っている場合は修正してください)、そのようなソリューションを開発してデプロイする方法がわからないようです。
POJOを作成し、JAX-WSアノテーションを付けて、クラスでwsgenを実行し、このservices.xmlファイルと一緒にすべてをaarファイルにパックしました。
<service name="TESTService" >
<description>
TEST web service
</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">com.test.WsdlImpl</parameter>
</service>
Webサービス呼び出しを実行しようとすると、Tomcatで例外が発生します。
[エラー]このAxisServiceのサービスクラスが見つかりません。 java.lang.RuntimeException:このAxisServiceのサービスクラスが見つかりません。 org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:95)で org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)で org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)で org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)で javax.servlet.http.HttpServlet.service(HttpServlet.java:710)で javax.servlet.http.HttpServlet.service(HttpServlet.java:803)で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)で org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)で org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)で org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)で org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)で org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)で org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)で org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)で org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)で org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:583)で org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)で java.lang.Thread.run(不明なソース)で
Tomcat + Axis2を使用してJAX-WSをデプロイする方法を説明するか(CXFがTomcatで動作する場合は、それを使用することもできます)、Tomcat+Axis2をカバーする優れたチュートリアルに案内してください。
ありがとう!!