JDK5 + Axis2: Как создать WS с параметрами в кодировке URL?

У меня работает Tomcat 5.5 + Axis2 1.5.5 + 2 сервлета. Один из моих сервлетов - это пользовательский сервлет, который тоже запускает 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 (строковый логин, строковый пароль, строковая роль, строковое свойство entityName, строковое свойство, строковые критерии)
  • public OMElement entityWriter (строковый логин, строковый пароль, строковая роль, строковое entityName, строковое actionType, свойство String)

В идеале я хочу вызвать эти методы прямо из моего URL, например:

HTTP: // локальный: 8080 / myServlet / услуги / EntityWebService / searchInstanceEntity Войти = JMM и пароль = JMM & роль = AdminRol & EntityName = beans.Personnel.Salarie и свойство = все и критерии = нуль

Я сделал класс 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";
    }

}

Теперь мой вопрос. Как я могу выставить мои 4 метода с включенным параметром в кодировке URL?

Моя конфигурация не работает, кажется, я что-то упустил. Мне удалось однажды сделать их вызываемыми, но без ввода параметров. Я извлек Axis2.xml из последней версии 1.5.5, но никаких лучших результатов. У нас была старая конфигурация, которая работала с обменом сообщениями RPC и XML, но я хотел избавиться от контейнеров AAR. У меня есть друг, у которого есть служба сообщений XMLInOut services.xml, которую я показал вам выше, и он работает для него. Он просто создал каталог под такими службами: /myServlet/services/EntityWebService/META-INF/services.xml

Помогите мне, пожалуйста, мне это нужно для моей работы. Спасибо

1 ответ

Решение

По всей видимости, обновление конфигурации Axis2 и использование выпуска 1.6 оси решило проблему. не знаю, как и почему, но что угодно...

Другие вопросы по тегам