Требуется: Tomcat + Axis2 + JAX-WS руководство для чайников

Мы работаем с Tomcat + Axis2 + POJO для реализации веб-сервиса, и мы столкнулись с некоторыми проблемами с POJO и Axis2, которые являются для нас препятствием. Похоже, что реализация синтаксического анализа SOAP Axis2 и POJO игнорирует имена элементов XML и просто присваивает значения аргументам в соответствии с порядком элементов XML в сообщении SOAP. Эта вещь вызывает много проблем в сложных API.

После некоторого плавания в болоте документации Axis2 я еще больше запутался, чем пришел, поэтому мне действительно нужна помощь.

Я понимаю, что JAX-WS и Axis2 не имеют этих проблем (поправьте меня, если я ошибаюсь), но я не знаю, как разработать и развернуть такое решение.

Я написал POJO и аннотировал его аннотациями JAX-WS, я выполнил wsgen для класса и упаковал все в файл aar вместе с этим файлом services.xml:

<service name="TESTService" >
    <description>
        TEST web service
    </description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver" />
        <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
    </messageReceivers>
    <parameter name="ServiceClass">com.test.WsdlImpl</parameter>
</service>

Когда я пытаюсь выполнить вызов веб-службы, я получаю исключение в Tomcat:

 [ERROR] The service class cannot be found for this AxisService.
java.lang.RuntimeException: The service class cannot be found for this AxisService.
    at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:95)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)

Пожалуйста, помогите мне, объяснив, как развернуть JAX-WS с Tomcat + Axis2 (если CXF работает с Tomcat, я также могу его использовать), или направьте меня к ХОРОШЕМУ руководству, которое охватывает Tomcat + Axis2.

Спасибо!!


person user24640    schedule 04.12.2008    source источник


Ответы (3)


Прямо с веб-сайта Axis2 это руководство по Axis2 и Jax. -Вс. Вы получаете указанную выше ошибку, вероятно, потому, что отсутствует файл axis2-jaxws-1.3.jar. Проверьте свой путь к классам.

Конечно, вы можете использовать CXF с Tomcat, и мое личное мнение таково, что вам будет лучше с ним.

person kgiannakakis    schedule 04.12.2008
comment
Спасибо за быстрый ответ. Я видел учебник, который вам понравился, и я следую его шагам, чтобы получить этот результат. Я постараюсь проверить, нет ли у меня файла axis2-jaxws-1.3.jar и сообщить об этом. Не могли бы вы рассказать об использовании tomcat + cxf + jax-ws? - person user24640; 04.12.2008

Помимо CXF, другим хорошим вариантом может быть Apache Tuscany, который чрезвычайно упрощает преобразование POJO в сервисы.

person Andrew Borley    schedule 03.01.2009

Мне посоветовали использовать официальную реализацию Sun уровня JAX-WS (Metro 1.4), и до сих пор она работала очень хорошо. Главное, что он знает, как генерировать артефакты по мере необходимости во время выполнения внутри веб-сервера.

Когда я добьюсь качества производства наших вещей, я, вероятно, напишу о необходимых шагах.

person Thorbjørn Ravn Andersen    schedule 20.02.2009