3

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をカバーする優れたチュートリアルに案内してください。

ありがとう!!

4

3 に答える 3

3

Axis2 Webサイトから直接、これはAxis2とJax-Wsをカバーするチュートリアルです。おそらくaxis2-jaxws-1.3.jarが欠落しているために、上記のエラーが発生します。クラスパスを確認してください。

もちろん、TomcatでCXFを使用することもできますが、私の個人的な意見では、CXFを使用したほうがよいと思います。

于 2008-12-04T07:59:57.727 に答える
1

CXF と同様に、もう 1 つの適切なオプションはApache Tuscanyです。これにより、POJO をサービスに非常に簡単に変換できます。

于 2009-01-03T11:01:01.293 に答える