【问题标题】:Needed: Tomcat + Axis2 + JAX-WS guide for dummies需要:Tomcat + Axis2 + JAX-WS 傻瓜指南
【发布时间】:2023-03-16 12:01:01
【问题描述】:

我们正在使用 Tomcat + Axis2 + POJO 来实现 Web 服务,但我们遇到了一些 POJO 和 Axis2 问题,这对我们来说是个大问题。 似乎 Axis2 和 POJO 的 SOAP 解析实现忽略了 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 的 GOOD 教程。

谢谢!!

【问题讨论】:

    标签: java web-services tomcat jax-ws axis2


    【解决方案1】:

    直接来自 Axis2 网站,this 是一个涵盖 Axis2 和 Jax-Ws 的教程。您收到上述错误可能是因为缺少axis2-jaxws-1.3.jar。检查你的类路径。

    您当然可以将 CXF 与 Tomcat 一起使用,我个人的看法是使用它会更好。

    【讨论】:

    • 感谢您的快速回复。我看到了你喜欢的教程,我按照它的步骤,得到了这个结果。我将尝试查看是否没有axis2-jaxws-1.3.jar 文件并报告。能否请您详细说明使用tomcat + cxf + jax-ws?
    【解决方案2】:

    除了 CXF,另一个不错的选择是 Apache Tuscany - 让 POJO 变成服务非常容易。

    【讨论】:

      【解决方案3】:

      我被建议使用 JAX-WS 层(Metro 1.4)的官方 Sun 实现,到目前为止它运行良好。主要的是它知道如何在运行时在网络服务器内根据需要生成工件。

      当我在这里的产品达到生产质量时,我可能会写下所需的步骤。

      【讨论】:

        猜你喜欢
        • 2012-08-13
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多