|
|
|
новичок
      
участник
Last Login: 12.11.2007 16:22
Сообщ.: 8,
Visits: 18
|
|
есть JBoss - как апп.сервер. под ним крутятся бины(EJB) - entity и session. вся логика храниться в корпоративных бинах (entity bean), связь с внешним миром - через сессионные компоненты (session bean). есть еще слой - сервлет, который подсоединяется к session bean и вызывает некоторые методы. все работает.задача следующая - перевести имеющийся функционал на новые рельсы - иметь возможность работать с системой через вебсервисы. и вот тут возникают вопросы. использовать ли мне сессионный бин в качестве вебсервиса (как исходник для генерации WSDL, стабов и проч..)? или прийдется создавать слой - сервлет, который будет вебсервисом, который просто будет передавать управление сессионному бину? может ли модуль ejb использоваться в качестве вебсервиса? или для этих целей используется только веб-модуль (.war)?
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 03.04.2008 13:12
Сообщ.: 1 297,
Visits: 12 498
|
|
Для WS по любому придется создавать war, кроме того выбрать ту или иную реализацию вэб-сервисов для Java, например Axis, сервлет по любому будет нужен, но обычно это сервлет реализации вэб-сервисов. Писать собственный сервлет не имеет смысла.
Если дизайн позволяет, то в принципе интерфейс session-bean'а может быть использван для генерации WSDL, стабов и прочая. Если нет, то можно сделать более упрощенный интерфес и на его основе генерировать WSDL.
С уважением,
Владимир
|
|
|
|
|
новичок
      
участник
Last Login: 12.11.2007 16:22
Сообщ.: 8,
Visits: 18
|
|
в IntelliJ IDEA есть плагин работы с вебсервисами - он работает с Axis. По идее это должно быть легко, всякие генераторы wsdl, стабов и проч.но на деле, существующие менюшки не дают деплоить класс в качестве веб сервиса для модулей, отличным от веб. поэтому я и решил, что веб сервисом может быть создан только на основе вебмодуля. О чем я имею неверное представление?
Правильно ли я понимаю, что JBoss'у (версии jboss-4.0.5.GA) для работы с веб службами необходим фреймворк JBossWS, который нужно ставить дополнительно?
или необходимый функционал уже присутствует? по адресу http://localhost:8080/jbossws/services JBoss отзывается и говорит:
Registered Service Endpoints ServiceEndpointID ServiceEndpointAddress
но это и все.
(Видимо нужно установить дополнительно, потому что плагин для IntelliJ IDEA ругается при указании пути к JBoss, т.к. требует установленного JBossWS)
|
|
|
|
|
новичок
      
участник
Last Login: 12.11.2007 16:22
Сообщ.: 8,
Visits: 18
|
|
использование тулзы (плагина для IDEA - http://plugins.intellij.net/plugin/?id=133 ) для TomCat - все прекрасно сработало - и
генерация WSDL из класса, и последующие генерации из wsdl "серверных" и "клиентских" кодов.
(Кстати, как их потом использовать?)
те же действия для JBoss - ошибка при попытке деплоя класса (сервлет) в качестве вебсервиса:
Nonvalid context or AxisServlet is not present (web service support not enabled for module)
в web.xml AxisServlet прописан (запустил поддержку веб сервисов - выбрал веб модуль, тип Server, Web Service Platform -
Apache Axis)
появились:
- сервлеты - AxisServlet, AdminServlet, SOAPMonitorService
- сервлетмаппинги -
/servlet/AdminServlet - AdminServlet
/servlet/AxisServlet, /services/* - AxisServlet
что это за ошибка?
как ее решить?
толи ставить JBossWS, к существующему JBoss 4.0.5 GA (или в этой версии есть JBossWS?)
толи ставить JBoss 4.2 (со 100% строенным JBossWS), плюс еще обновлять JRE...
|
|
|
|
|
новичок
      
участник
Last Login: 12.11.2007 16:22
Сообщ.: 8,
Visits: 18
|
|
Для добавления библиотек Axis в classpath и деплоя, я запускаю поддержку веб сервисов - "enable web service support"
В этом диалоге предлагается ввыбрать тип - server или client.
Во втором случае имеется возможность выбрать не вебмодули.
Хелп подсказывает, что в этом случае необязательна генерация клиентского кода.
В режиме server сервлет Axis добавляется в web.xml
Что-то я совсем запутался...
Кто смог реально запустить веб сервисы под JBoss ?
Добавлено через 1 минуту и 15 секунд
Я уже пришел к мысли, что прийдется реализовывать слой сервлета, который будет дергать сессионный бин.
Уже согласился на это
У меня получается создать примитвный веб сервис для Tomcat - я могу увидеть список сервисов, их wdsl.
И не могу для JBoss - хотя выполняю те же действия.
Ведь JBoss использует Tomcat в качестве сервлет-контейнера...
Может дело в том, что я использую в качестве платформы вебсервисов Axis? Может быть для JBoss нужно использовать JBossWS?
Хотя натыкался на мнение, что JBoss (а точнее JBossWS) так же использует Axis...
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 03.04.2008 13:12
Сообщ.: 1 297,
Visits: 12 498
|
|
> Axis добавляется в web.xml
Правильно, через Axis-servlet и будет проходить коммуникация между клиентом и бизнес-логикой на сервере.
Главное, чтобы Axis библиотека была включена в war-файл, на случай, если они не входят в стандартный набор JBoss (а они вроде бы не входят).
> Кто смог реально запустить веб сервисы под JBoss ?
Ну я деплоил приложение с вэб-сервисами под JBoss локально, war-файл был точно таким же как и для BEA Weblogic, за исключениме дополнительных deployment descriptors для Weblogic и некоторых махинаций с конфигурацией JBoss'а для правильной регистрации имен JNDI ресурсов (DB connection, EJB).
Никаких особых проблем не было.
С уважением,
Владимир
P.S. JBossWS не пробовал, возможно с ним будет проще, даже если он и сам по себе использует Axis.
P.P.S. Единственное, что могу сказать, визардами из различных IDE для разработки WS не пользовался, war-файл собирался самостоятельно и различные конфигурации изменялись вручную, может быть так конечно и дольше возиться, но зато понимаешь, что к чему и за что отвечает и код получается красивее и проще чем сгенерированный.
|
|
|
|
|
Junior Member
      
участник
Last Login: 20.03.2008 9:23
Сообщ.: 23,
Visits: 176
|
|
Я устанавливала jbossws отдельно, но судя по тому, что у Вас он отзывается, значит он уже стоит. Вот это: Registered Service Endpoints ServiceEndpointID ServiceEndpointAddress означает лишь то, что пока Вы не заделоили ни одного сервиса. Когда какойто задеплоите, напротив ServiceEndpointID ServiceEndpointAddress высветится адресс сервиса. Кристина
|
|
|
|