Как мне построить Rest + EJB, используя Weblogic? - PullRequest
0 голосов
/ 15 апреля 2011

Мне нужно создать 1 полноценный веб-сервис с использованием weblogic.Этот веб-сервис будет иметь параметры для выбора того, какие данные сервис должен возвращать.Например, «клиент» или «продукт».

Теперь я хочу развернуть код «клиент» и «продукт» как отдельные развертываемые приложения, чтобы я мог добавлять или удалять новый код без повторного развертывания всего кода.каждый раз, когда происходит изменение.

Поэтому я хочу, чтобы один общий веб-сервис назвал эту бизнес-логику.

Мой вопрос: каков наилучший способ структурировать это?Могу ли я развернуть отдельные EJB-компоненты для своей бизнес-логики и заставить веб-сервис вызывать EJB-компоненты на основе переданных параметров?

Или я должен иметь бизнес-компоненты в качестве разделяемой библиотеки и вызывать их таким образом?Я ищу способ добиться максимальной производительности.

У меня будет около 20 различных бизнес-модулей, написанных другими программистами.Как я уже сказал, я не хочу, чтобы все модули были в одном файле EAR или WAR.Они должны быть развертываемы отдельно.

Есть мысли?

1 Ответ

1 голос
/ 15 апреля 2011

WebLogic 10.3.4 включает новую поддержку API Java EE6, включая JAX-RS 1.1 с Джерси.Недавно мы провели веб-трансляцию, посвященную этой функциональности, и веб-трансляция № 4 посвящена JAX-RS.Вот ссылка: http://www.oracle.com/technetwork/middleware/weblogic/learnmore/weblogic-javaee6-webcasts-358613.html Существует также пример приложения под названием Oracle Parcel Service, и вы можете скачать код здесь: https://www.samplecode.oracle.com/sf/projects/oracle-parcel-svc/.

Если вы используете JAXB, вы можете выполнить маршаллинг из JSON и XMLв тот же объект Java.Проблема в том, что сгенерированные JAXB классы по умолчанию не сериализуемы, поэтому, если вы хотите получить доступ к удаленному EJB из службы JAX-RS, у вас возникнет проблема.

Поскольку у вас не может быть модулейв том же EAR есть еще один вариант.Вы могли бы использовать совместно используемые библиотеки Java EE.Затем вы можете развернуть свой EJB как общую библиотеку Java EE и ссылаться на эту библиотеку в своем REST-клиенте.Вот пример:

В своем модуле EJB включите в манифест что-то вроде следующего:

Extension-Name: ops-util
Implementation-Title: OPS 2.0 Utils Library EXAMPLE_ONLY
Implementation-Vendor: Oracle
Implementation-Vendor-Id: com.oracle
Implementation-Version: 2.0.1
Specification-Title: Oracle Parcel Service 2.0 Utils Library
Specification-Vendor: Oracle
Specification-Version: 2.0

Затем обратитесь к общей библиотеке в weblogic.xml (WAR) или weblogic-application..xml (EAR):

<wls:weblogic-application
    xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-application"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd">
  <!-- server-version: 10.3 -->
<wls:library-ref>
  <wls:library-name>ops-util</wls:library-name>
  <wls:specification-version>2.0</wls:specification-version>
  <wls:implementation-version>2.0.1</wls:implementation-version>
  <wls:exact-match>false</wls:exact-match>
</wls:library-ref>
</wls:weblogic-application>
...