【问题标题】:JDK5 + Axis2 : How to create a WS with URL encoded parameters?JDK5 + Axis2:如何创建带有 URL 编码参数的 WS?
【发布时间】:2011-08-05 08:44:26
【问题描述】:

我正在运行 Tomcat 5.5 + Axis2 1.5.5 + 2 servlet。 我的一个 servlet 是一个自定义的 servlet,它也可以运行 axis2。 我有 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(String entityName)
  • 公共 OMElement getEntityList()
  • public OMElement searchInstanceEntity(字符串登录,字符串密码, 字符串角色、字符串实体名称、字符串属性、字符串条件)
  • 公共 OMElement entityWriter(字符串登录,字符串密码,字符串 role,String entityName, String actionType, String property)

理想情况下,我想直接从我的 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

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

【问题讨论】:

    标签: xml jax-ws axis2 jax-rpc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多