java - 需要 : Tomcat + Axis2 + JAX-WS guide for dummies

标签 java web-services tomcat jax-ws axis2

我们正在使用 Tomcat + Axis2 + POJO 来实现 Web 服务,我们遇到了一些 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 中遇到异常:

 [ERROR] The service class cannot be found for this AxisService.
java.lang.RuntimeException: The service class cannot be found for this AxisService.
    at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:95)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)

请帮助我解释如何使用 Tomcat + Axis2 部署 JAX-WS(如果 CXF 可以与 Tomcat 一起使用,我也可以使用它),或者指导我阅读涵盖 Tomcat + Axis2 的 GOOD 教程。

谢谢!!

最佳答案

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

您当然可以将 CXF 与 Tomcat 一起使用,我个人认为您最好使用它。

关于java - 需要 : Tomcat + Axis2 + JAX-WS guide for dummies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339802/

相关文章:

java - Hazelcast 中复杂类的序列化

java - 微服务 Restful API - DTO 与否?

web-services - Wso2 文件上传。连接重置

java - Tomcat 6 和 log4j 应用程序日志记录不产生输出

java.net.MalformedURLException smtp 协议(protocol)

java - Jacoco 覆盖率和 Kotlin 默认参数

java - 按钮卡住,需要打破java中的无限循环

PHP 网络服务 SOAPClient 错误

java - Web 服务和跨站点请求伪造

tomcat - java.lang.NoClassDefFoundError : org/quartz/SchedulerException 错误