首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDK5 + Axis2 :如何使用URL编码参数创建WS?

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

Stack Overflow用户
提问于 2011-08-05 08:44:26
回答 1查看 570关注 0票数 0

我已经运行了Tomcat5.5+ Axis2 1.5.5 +2 servlet。我的servlet之一也是运行axis2的自定义servlet。我有WEB和它下面的所有子目录(conf、lib、services和模块)。

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

代码语言:javascript
复制
<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>  

这个扔了这个:

代码语言:javascript
复制
 <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>

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

代码语言:javascript
复制
<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都应该公开这些方法(至少我从所有web信息中都了解到了这一点):

字符串登录、字符串密码、字符串角色、String entityName、String属性、String criteria)

  • public OMElement entityWriter(字符串登录、字符串密码、字符串角色、String entityName、String actionType、String属性)

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

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

我这样做了EntityWebService类,这样它就可以使用WS标准运行了:

代码语言:javascript
复制
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

帮帮我,我需要这个做我的工作。thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-08 08:53:02

显然,升级Axis2配置并使用1.6轴版本解决了这个问题。不知道怎么做和为什么但是不管..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6953635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档