0

我正在使用 Maven 开发一个带有 Axis2 的嵌入式 Web 服务的 Web 应用程序。服务实现是一个具有 RPC 样式交互的 POJO,目标应用服务器是运行 Axis2 servlet 的 Tomcat。

“Hello world”可以工作,但现在我需要在axis2.xml 文件(位于WEB-INF/conf 下)中配置一些全局axis2 设置。

请为此公共环境提供或指向axis2.xml 的简单配置。从二进制发行版中获取的默认值激活了太多功能(热部署?),也导致了这个问题:

<soapenv:Reason>
    <soapenv:Text xml:lang="en-US">
        The ServiceClass object does not implement the required method 
        in the following form: OMElement ping(OMElement e)
    </soapenv:Text>
</soapenv:Reason>

作为参考:http ://axis.apache.org/axis2/java/core/docs/servlet-transport.html说以这种方式配置servlet传输,但它并没有解决问题。

<transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener"/>
4

2 回答 2

3

显然问题是默认axis2.xml设置原始xml messageReceivers,而不是RPC。

尝试将此添加到已开发服务的 services.xml 中,应该可以解决问题。

<messageReceivers>
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
                   class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                   class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
于 2013-05-22T14:42:18.757 回答
2

“对我有用的解决方案是在 service.xml 中针对 Java 服务方法名称添加操作标记:

 <operation name="sayHello" >
        <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>        
<parameter name="ServiceClass" locked="false">com.learning.webservices.pojo.HelloService</parameter>
于 2016-02-03T17:21:02.453 回答