Простые веб-сервисы Java - PullRequest
       10

Простые веб-сервисы Java

2 голосов
/ 11 октября 2008

Кто-нибудь знает действительно простой способ публикации методов Java как веб-сервисов? Я действительно не хочу накладных расходов на использование Tomcat или Jetty или любых других контейнерных сред.

Сценарий: у меня есть набор методов Java в приложении типа сервиса, к которому я хочу получить доступ с других машин в локальной сети.

Ответы [ 5 ]

5 голосов
/ 11 октября 2008

Ну, Tomcat или Jetty могут быть излишними для публикации только некоторых методов в качестве веб-сервиса. Но с другой стороны, это не слишком сложно, и они делают свою работу, так почему бы и нет?

У меня была похожая проблема не так давно, и я использовал Tomcat вместе с Axis2. Просто скачайте Tomcat, распакуйте его, разверните Axis2 WAR. Чтобы опубликовать веб-сервис, есть несколько подходов, один из которых я выбрал, вероятно, один из самых простых:

Просто соберите ваше приложение как обычно и аннотируйте класс и методы веб-службы соответствующими аннотациями из javax.jws. *. Упакуйте все в банку. Создайте файл service.xml в каталоге META-INF вашего jar-файла и поместите его в него:

<service name="name of the service" scope="<one of request, session or application>">
    <description>
    optional description of your service
    </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" locked="false">put here the fully qualified name of your service class (e.g. x.y.z.FooService)</parameter>

</service>

Переименуйте .jar в .aar и поместите его в каталог / webapps / axis2 / WEB-INF / services /. Запустите Tomcat, и служба будет развернута. Вы можете проверить, работает ли он, посетив страницу axis2 (http://localhost:8080/axis2/).. Там вы увидите, какие службы развернуты и какие методы экспортированы. Также вы можете получить там URL-адрес WSDL для подключения к вашей службе.

Прочтите http://ws.apache.org/axis2/1_4_1/contents.html, чтобы узнать больше об использовании Axis2. Подход, который я описал здесь, не найден в документации точно таким же образом, но он работает очень хорошо.

Обновление: Если вы просто хотите предоставлять веб-сервисы и не нуждаетесь ни в каких других функциях Tomcat (например, в обслуживании простых старых веб-страниц, jsps или других материалах), вы также можете используйте автономный сервер Axis2. Но за исключением части настройки, это ничего не меняет, что я описал.

Я написал немного более подробную версию этого, которую можно найти по адресу: http://www.slashslash.de/lang/en/2008/10/java-webservices-mit-apache-tomcat-und-axis2/ (не позволяйте немецкому URL раздражать вас, он написан на английском)

2 голосов
/ 11 октября 2008

Erhm. Почему бы просто не использовать RMI ?

2 голосов
/ 11 октября 2008

Веб-сервисы зависят от HTTP. Вы можете не хотеть кота или молы. В этом случае вы должны реализовать HTTP самостоятельно.

1 голос
/ 11 октября 2008

Причал довольно легкий. В противном случае, я думаю, что XML-RPC - ваш единственный разумный вариант.

0 голосов
/ 19 ноября 2008

Более простое решение, чем то, которое описал Саймон, состоит в том, чтобы использовать инструменты, которые делают это. Если вы используете Eclipse, вы можете использовать http://ws.apache.org/axis2/tools/1_2/eclipse/servicearchiver-plugin.html

для создания файла AAR.

...