У меня запущен Tomcat 5.5 + Axis2 1.5.5 + 2 сервлета.
Один из моих сервлетов - это пользовательский сервлет, который тоже запускает axis2.
У меня есть WEB-INF и все его подкаталоги (conf, lib, services и modules).
Теперь один из моих классов - 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 ()
- публичный OMElement searchInstanceEntity (строковый логин, строковый пароль,
Строковая роль, строковое entityName, строковое свойство, строковые критерии)
- 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:
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.xml, которые я показал вам выше, и он работает для него. Он просто создал каталог под такими службами:
/myServlet/services/EntityWebService/META-INF/services.xml
Помогите мне, пожалуйста, мне это нужно для моей работы. ТНХ