Есть ли предпочтительный способ обновления приложений, использующих EJB?
-
05-07-2019 - |
Вопрос
У меня есть Java-приложение, которое работает с EJB, но если:
<Ол>Есть ли предпочтительный способ обновления клиентских jar-файлов для сервера приложений и bean-компонента без участия человека?
Если предпочтительный метод зависит от сервера приложений, тогда предположим, что jboss.
Решение
Это одна из причин, по которой люди переходят на веб-сервисы :) Или тоже используйте JMS.
Действительно, если ваш сервер приложений обновляется или меняется поставщик, ваши старые / чужие заглушки не будут работать с новым кодом на стороне сервера. : - (
Помните, что EJB объявил, что должна быть роль развертывания приложения? Он должен подготовить client.jar для клиентских приложений и распространить его (или, может быть, это пакет приложений? Не имеет значения; дело в том, что это не автоматическая операция).
Некоторые хитрости могут быть возможны (например, требовать размещения client.jar в определенном месте на сервере, чтобы сначала загрузить его клиентом, а затем использовать загрузчик классов), но это больше взломов, чем установившаяся практика.
Что касается специфики JBoss, у меня нет никакой информации.
Другие советы
Основная проблема в том, что если контракт интерфейса между одним компонентом изменяется, он нарушает другой компонент. Это не проблема, ограниченная приложениями и EJB-компонентами, это просто не безопасно для компилятора.
Единственный известный мне автоматизированный подход заключается в настройке ваших проектов таким образом, чтобы сделать проект App зависимым от проекта EJB (в среде IDE и файлах сборки), предоставляя вам проверку компилятора. И развернуть их вместе как EAR.
Если это не вариант, и они должны быть развернуты отдельно, то ваш разработчик EJB должен быть в курсе того, как сохранить обратно совместимые интерфейсы без изменений.