Axis2的简单axis2.xml嵌入在webapp中

时间:2013-05-22 13:19:57

标签: maven servlets embed axis2

我正在使用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"/>

2 个答案:

答案 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>
相关问题