Какой подход для веб-службы Java использовать? - PullRequest
0 голосов
/ 02 августа 2011

Я занимаюсь разработкой веб-приложения с несколькими платформами (spring, hibernate, spring-security, ZK for GUI) и использую Tomcat в качестве сервера приложений. Я должен сказать, что у меня нет абсолютно никакого опыта с технологиями веб-сервисов Java. Дело в том, что в ближайшем будущем мне почти наверняка придется предоставить ряд сервисов для некоторых внешних приложений, и мне было интересно, каким будет путь (учитывая используемые мной фреймворки) ...

Я видел и читал различные учебные пособия и некоторые вопросы ( ссылка ) относительно Axis, Axis2, JAX-WS ... Меня немного смущает то, что я не знаю что это обычная практика (если таковая имеется) для интеграции сервисов в существующее веб-приложение (в основном с точки зрения организации проекта). На мой взгляд, эти службы, которые мне нужно реализовать, будут частично полагаться на существующий исходный код, поэтому я не знаю, должен ли я использовать совершенно отдельный проект, или я могу поместить его в папку своего существующего веб-приложения (которую я пробовал с Axis2, но не знаю, хорошая ли это практика).

Спасибо.

Ответы [ 5 ]

2 голосов
/ 02 августа 2011

Как организовать проекты?

В целом, я согласен с @ericacm, но есть одна вещь, о которой вы должны помнить ... Вы сказали, что в ближайшем будущем собираетесь разработать количество услуг . Вы можете прийти к точке, в которой вы хотите разместить службы на отдельном сервере, например, по причинам производительности, доступности или ремонтопригодности. Это может повлиять на ваше решение о разделении проектов. Кроме того, разделение «обеспечивает» слабую связь, но, следовательно, создает другие проблемы, такие как совместное использование сеансов в нескольких WAR. Это индивидуальное решение.

Если бы я был в вашей ситуации, я бы сначала спросил себя, относится ли служба (службы) к веб-приложению логически или нет.

Осуществление

Когда дело доходит до реализации WS- *, вам нужно принять 2 решения:

  1. Выберите API для использования; сегодня я не вижу причин, чтобы не использовать JAX-WS вместе с JAXB в качестве API, они хорошо работают и стандартизированы.
  2. Определить рамки; У меня есть опыт использования Axis2, а также METRO (имейте в виду, что JSE 1.6+ обеспечивает базовую поддержку JAX-WS). Оба работают хорошо. Изменить рамки легко, если использовать API-интерфейсы JAX-WS.
2 голосов
/ 02 августа 2011

У меня хороший опыт работы с Spring-WS 2+ и ручным отображением Кастора. Это простая, но мощная комбинация.

Spring-ws 2:

  • обеспечивает разработку по контракту (особенно хорошо для веб-приложения с рядом сервисов).
  • предоставляет аннотацию WS
  • поддерживает сопоставление XML (Castor, JaxB и т. Д.)

Касторовое:

  • отображение на основе конфигурации xml
  • позволяет отображать несколько сообщений (запросов / ответов) на один объект Java (на основе конфигурации xml)

Если вы используете какой-либо сервер Java EE 6, рассмотрите также JAXB для ручного отображения:

  • отображение на основе аннотации
  • должно быть быстрее, чем Castor
  • позволяет отображать несколько сообщений (запросов / ответов) на один объект Java (при использовании наследования Java)
1 голос
/ 02 августа 2011

Spring-WS - это сложный фреймворк для простых веб-сервисов. Если вы хотите полностью понять веб-сервисы и знать основные моменты веб-сервисов, изучите Spring-WS. Он чрезвычайно гибкий и предоставляет множество возможностей.

Иначе, если вы хотите более простую альтернативу, используйте JAX-WS. Spring поддерживает аннотации JAX-WS. Обратитесь к разделу 17.5.7. Экспорт веб-сервисов с использованием поддержки Spring JAX-WS RI.

http://static.springsource.org/spring/docs/2.5.x/reference/remoting.html

1 голос
/ 02 августа 2011

Вы можете пойти дальше и поместить их в один и тот же проект.Каждый веб-сервис будет дополнительным интерфейсом и классом реализации наряду с некоторой конфигурацией.

Поскольку вы используете Spring CXF , это хороший выбор для JAX-WS, поскольку он хорошо интегрируется с Spring,См. эту страницу как стартер.

0 голосов
/ 02 августа 2011

Можно ли вручную создать WS Server и WS Client (без генераторов) с помощью JAX-WS?Особенно, если вы разрабатываете большое приложение, вы хотите повторно использовать объекты, но генераторы генерируют много классов, которые могут быть на 99% одинаковыми (например, если ваше приложение - WS Client, и вам необходимо подключиться к плохо спроектированному внешнему WSServer).Есть ли какой-то учебник, как создать вручную?

Существует множество причин, по которым я не люблю генераторы и полностью согласен с http://ogrigas.eu/spring/2010/04/spring-ws-and-jaxb-without-a-code-generator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...