Поддержка EJB в Websphere Traditional против Liberty - PullRequest
2 голосов
/ 23 января 2020

Я работаю над проектом, в котором мы планируем использовать WLP (WebSphere liberty) вместо традиционного WAS.

В коде есть модули ejb (ejb 2 и 3) для различных компонентов. Клиент EJB одного компонента используется некоторыми другими компонентами для связи с модулем сервера EJB.

Я знаю, что у свободы есть некоторые функции ejb. Но имеет ли свобода тот же уровень поддержки / функций для EJB, который доступен в WAS 9?

Каковы ограничения / проблемы использования EJB со свободой?

1 Ответ

4 голосов
/ 23 января 2020

WebSphere v9 и WebSphere Liberty поддерживают полную спецификацию EJB 3.2 (которая включает поддержку EJB 1 и EJB 2 на обратном уровне). Однако в WebSphere Liberty есть некоторые ограничения, связанные с поддерживаемыми дополнительными функциями и расширениями, которые go выходят за пределы спецификации EJB. Текущие ограничения в WebSphere Liberty по сравнению с WebSphere v9:

  • Бины сущностей : Liberty не поддерживает дополнительный объект CMX / BMP 2.x / 1.x Группа API Beans.

  • JAX-RP C Конечные точки веб-службы : Liberty не поддерживает дополнительную группу API конечных точек JAX-RP C WebService. (Поддерживаются конечные точки JAX-WS)

  • Встраиваемый контейнер EJB : Liberty не обеспечивает реализацию необязательной группы API встраиваемого контейнера EJB.

  • Распространение транзакции : Liberty не поддерживает распространение исходящей или входящей транзакции для удаленных методов EJB. Транзакции распространяются внутри серверного процесса, но не от клиента или с другим серверным процессом.

  • Поддержка тонкого клиента EJB : Liberty не предоставляет тонкого клиента EJB Тем не менее, он поддерживает использование тонкого клиента EJB WebSphere v9. Liberty предоставляет полный Java EE клиент приложения. Кроме того, Liberty не предоставляет инструментов для генерации классов заглушки EJB вручную для использования с тонким клиентом, хотя заглушки создаются с помощью RMI C (EJB 2.x / 1.x) или команды createEJBStubs (EJB 3.x) из Поддерживается WebSphere v9.

  • Пользовательские имена JNDI : Liberty не поддерживает связывание EJB-компонентов в JNDI с использованием пользовательских имен (из ibm-ejb-jar-bnd.xml). EJB доступны в местах, определенных спецификациями в java:global, java:app и java:module. Примечание: эта поддержка находится в разработке, и вы можете следить за ходом работы, как описано здесь: https://github.com/OpenLiberty/open-liberty/issues/7918

  • Постоянное переключение таймера при сбое : Liberty не поддерживает переключение через постоянные таймеры EJB на другие экземпляры сервера. Примечание: эта функция находится в разработке (и в настоящее время находится в бета-версии), и вы можете следить за ходом работы, как описано здесь: https://github.com/OpenLiberty/open-liberty/issues/7774

  • Stateful session аварийное переключение : Liberty не поддерживает переключение состояния сеансовых компонентов с сохранением состояния на другие экземпляры сервера.

  • WLM : Liberty не предоставляет возможности, аналогичные Поддержка управления рабочими нагрузками в WebSphere v9 для удаленных вызовов EJB.

  • PMI : Liberty не поддерживает инфраструктуру мониторинга производительности WebSphere, предоставляемую в WebSphere v9.

  • Локальная оптимизация для удаленных интерфейсов EJB : Удаленные вызовы EJB в одном и том же серверном процессе не оптимизируются, они будут go через полный стек RMI / IIOP.

  • Поддержка EJB MDB для портов прослушивателей : Liberty поддерживает использование спецификаций активации с компонентами, управляемыми сообщениями.

На основе При написании вашего приложения у вас могут возникнуть проблемы с использованием удаленных интерфейсов EJB из-за отсутствия поддержки распространения транзакций, тонкого клиента EJB и WLM. Вы можете вместо этого рассмотреть возможность представления этих компонентов в качестве конечных точек Web-сервиса (@WebService). Кроме того, если приложение использует собственные имена JNDI, такие как ejb/ABean или ejblocal:ABean, вам необходимо переключить их на поиск компонентов, используя определенные в спецификации местоположения, такие как java:global/<app>/<module>/ABean!<interface>.

...