2011-08-05 31 views
0

我有Tomcat 5.5 + Axis2 1.5.5 + 2 servlets運行。 我的一個servlet是一個運行axis2的自定義servlet。 我有WEB-INF及其下的所有子目錄(conf,lib,services和modules)。JDK5 + Axis2:如何使用URL編碼參數創建WS?

現在,我的一個類是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()
  • public OMElement searchInstanceEntity(String login,String password, String role,String entityName,String property,String criteria)
  • public OMElement entityWriter(String login,String password,String 作用,字符串的entityName,字符串操作類型,String屬性)

理想我想直接從我的網址調用這些方法,如:

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消息服務.xml,我向你展示了它,它適用於他。他只是在這樣的服務下創建一個目錄: /myServlet/services/EntityWebService/META-INF/services.xml

請幫助我,我需要這個工作。 thx

回答

0

顯然,升級Axis2配置並使用1.6軸版本解決了該問題。不知道如何和爲什麼,但無論如何...