繁体   English   中英

JDK5 + Axis2:如何使用URL编码参数创建WS?

[英]JDK5 + Axis2 : How to create a WS with URL encoded parameters?

我正在运行Tomcat 5.5 + Axis2 1.5.5 + 2个servlet。 我的servlet之一是也运行axis2的自定义servlet。 我有WEB-INF及其下的所有子目录(conf,lib,服务和模块)。

现在,我的课程之一是EntityWebService,它应该作为WS公开。 所以我做了这个services.xml文件:

<service name="EntityWebService" scope="application">
    <description>
    service web sur les entites
    </description>
<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>
    <parameter name="ServiceClass">com.webservice.EntityWebService</parameter>
 </service>  

这个抛出这个:

 <soapenv:Reason>
<soapenv:Text xml:lang="en-US">
The service cannot be found for the endpoint reference (EPR) /myServlet/services/EntityWebService/getEntityList
</soapenv:Text>
</soapenv:Reason>

我也尝试过一个简单的方法:

<service name="EntityWebService">
    <description>Web Service</description>
    <parameter name="ServiceClass" locked="xsd:false">com.webservice.EntityWebService
    </parameter>
    <operation name="getEntityList">
        <messageReceiver
            class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
    </operation>
    <operation name="getEntityDescription">
        <messageReceiver
            class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
    </operation>
    <operation name="searchInstanceEntity">
        <messageReceiver
            class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
    </operation>
    <operation name="entityWriter">
        <messageReceiver
            class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
    </operation>
</service>

这也引发了同样的事情。

这两个xml都应该(至少是我从所有网络资料中了解的)公开这些方法:

  • 公共OMElement getEntityDescription(字符串entityName)
  • 公共OMElement getEntityList()
  • 公用OMElement searchInstanceEntity(字符串登录名,字符串密码,字符串角色,字符串entityName,字符串属性,字符串条件)
  • 公共OMElement entityWriter(字符串登录,字符串密码,字符串角色,字符串entityName,字符串actionType,字符串属性)

理想情况下,我想直接从我的URL调用这些方法,例如:

http:// localhost:8080 / myServlet / services / EntityWebService / searchInstanceEntity?login = jmm&password = jmm&role = AdminRol&entityName = beans.Personnel.Salarie&property = all&criteria = null

我已经将EntityWebService类制作成这样,因此可以与WS标准一起运行:

package com.webservice;

[imports]

@WebService
public class EntityWebService extends AbstractWebService
{


    @WebMethod
    public OMElement getEntityList(OMElement e) throws RemoteException
    {
               [...]

    }

    @WebMethod
    public OMElement getEntityDescription(OMElement omEntityParam) throws RemoteException
    {
               [...]
    }

    @WebMethod
    public OMElement searchInstanceEntity(OMElement omParam) throws RemoteException
    {
        [...]
    }

    @WebMethod
    public OMElement entityWriter(OMElement omParam) throws RemoteException
    {
        [...]
    }

    @Override
    public String getServiceName()
    {
        return "EntityWebService";
    }

}

现在我的问题。 如何在启用了URL编码参数的情况下公开我的4种方法?

我的配置不起作用,好像我丢失了一些东西。 我设法使它们可调用但没有输入参数。 我从最新的1.5.5版本中检索了Axis2.xml,但没有更好的结果。 我们有一个用于RPC消息传递和XML的旧配置,但是我想摆脱AAR容器。 我有一个朋友,我在上面向您介绍了XMLInOut消息传递services.xml,它对他有用。 他只是在这样的服务下创建了一个目录:/myServlet/services/EntityWebService/META-INF/services.xml

请帮助我,我的工作需要这个。 谢谢

显然,升级Axis2配置并使用1.6轴版本可以解决此问题。 不知道如何和为什么,但是无论如何...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM