Как сгенерировать EJB из WSDL - PullRequest
       33

Как сгенерировать EJB из WSDL

2 голосов
/ 03 октября 2011

Я знаю, как использовать аннотации @WebService и @Stateless для написания EJB и представления его в WebService.

Но поскольку мы пытаемся использовать другие инструменты, чтобы сначала сгенерировать WSDL, а затем создать код Java. Я могу использовать WSDLC WebLogic для генерации кода сервиса из WSDL. Но проблема в том, что код, сгенерированный WSDLC, не является EJB. Есть ли предложение сделать WSDL -> EJB?

Если это возможно, я предпочитаю не использовать ОСь.

Ответы [ 3 ]

2 голосов
/ 03 октября 2011

Я работаю в EJB и веб-сервисах довольно долго и не сталкивался с такими инструментами.Логически это имеет смысл,

  1. Сами веб-сервисы не являются компонентами, а являются фасадом для некоторого бизнес-компонента (в данном случае EJB).Они отделены друг от друга.
  2. Генераторы базового кода WSDL будут генерировать эти фасады или аннотированные Pojos.
  3. То, использует ли этот POJO / Facade EJB или любые другие сервисы для дальнейшего делегирования, полностью зависит от реализации.

    По этой причине я считаю, что такого инструмента для генерации EJB не будетпрямо из WSDL.Но опять же я ограничен своим опытом.Мне было бы интересно узнать, существует ли такой инструмент.

РЕДАКТИРОВАТЬ: Просто FYI, есть Расширение EJB WSDL .Но ему нужны существующие EJB, чтобы связать свою работу с WSDL.(Он не создает код EJB)

1 голос
/ 03 октября 2011

Ну, не то чтобы новый EJB 3.1 не намного лучше старых версий, но я все же предпочитаю использовать Apache CXF для реализации веб-сервисов:

http://cxf.apache.org/

У него есть хороший инструмент wsdl2java (который также можно использовать как плагин maven):

http://cxf.apache.org/docs/wsdl-to-java.html

, который берет ваш WSDL-файл, проверяет его, а затем генерирует очень чистый шаблон Javaкод для реализации вашего веб-сервиса: у вас есть классы JAXB для маршалинга запросов и ответов, очень простой (кодируемый для интерфейса) класс реализации веб-сервиса с методами для каждой операции ws (какие методы вы, конечно, должны реализовать самостоятельно с помощью своей бизнес-логики)) и, возможно, симпатичная заглушка клиента Java, которую другое приложение Java может использовать для легкого доступа к вашему сервису.Даже без клиентской заглушки вы по-прежнему получаете хорошую чистую и стандартную реализацию, которая по сути представляет собой просто классы Java, и для запуска (или тестирования) вашего веб-сервиса не требуется контейнер EJB.

0 голосов
/ 06 октября 2011

SAP NetWeaver Developer Studio поддерживает создание EJB WebService из WSDL. Я просто попробую это. http://help.sap.com/saphelp_nw72/helpdata/en/46/7f2fef88190ad3e10000000a11466f/content.htm

И я также проверяю код, сгенерированный Apache CXF, WebLogic wsdlc и SAP. Они подобны. А если вы используете EJB 3, вы можете просто добавить аннотацию @Stateless к коду, сгенерированному Apache CXF или WebLogic, чтобы он был EJB.

Но я думаю, что это не очень хорошая идея, чтобы выставлять бизнес-EJB напрямую WebService. Должен быть сервисный уровень. Преимущество использования EJB в качестве сервисного уровня заключается в том, что он может использовать инъекцию для легкого доступа к другому EJB.

...