我正在使用Maven开发一个带有Axis2的嵌入式Web服务的webapp。 服务实现是具有RPC样式交互的POJO,目标应用程序服务器是运行Axis2 servlet的Tomcat。
“Hello world”有效但现在我需要在axis2.xml文件中配置一些全局axis2设置(放在WEB-INF / conf下)。
请为此公共环境提供或指向axis2.xml的简单配置。 从二进制分发中获取的默认值有太多功能被激活(hotdeploy?)并且还会导致此问题:
<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"/>
答案 0 :(得分: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>
答案 1 :(得分:3)
“对我有用的解决方案是在service.xml中针对Java Service方法名称添加操作标记:
<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>