Приложение Java SE для перемещения на сервер Java EE
У меня есть приложение Java SE, которое работает в своей собственной JVM, используя java -jar. У него есть основная функция, которая регистрирует некоторые обратные вызовы для определенных серверов SMPP, а основной поток после регистрации этих обратных вызовов продолжает проверять возможность подключения для этих серверов.
Можно ли перенести приложение такого типа на сервер Java EE, например сервер приложений WebSphere?
Каковы будут архитектурные изменения?
Выше приведено однопоточное консольное приложение, которое работает до тех пор, пока его процесс не будет завершен. Он продолжает проверять связь.
5 ответов
Можно ли перенести приложение такого типа на сервер Java EE, например сервер приложений WebSphere?
Да, техническая логика любого приложения может выполняться внутри сервера приложений, это просто вопрос того, как вы упаковываете приложение и какие дескрипторы вы применяете. В зависимости от этого вам может потребоваться реализовать несколько интерфейсов, которые служат в качестве методов обратного вызова или прослушивателей для сервера для запуска и завершения работы вашего приложения.
Хорошая причина позволить приложению работать на сервере приложений, вероятно, заключается в том, что в сильно стандартизированной и управляемой среде поставщик услуг будет предлагать только нестандартизированные услуги или продукты за большие дополнительные деньги.
Другая веская причина в том, что вы хотите использовать управляемые ресурсы с сервера приложений. Это может быть, например, обмен сообщениями или постоянство.
В любом случае вам необходимо понимать как затраты, так и преимущества использования сервера приложений.
Каковы будут архитектурные изменения?
Вам потребуется, чтобы контейнер (сервер приложений) управлял жизненным циклом вашего приложения через интерфейсы или прослушиватели. Например, если вы решили упаковать свое приложение как WebApp (не знаю, хорошо ли это в вашем случае, есть другие варианты), то вам, вероятно, придется реализовать Filter или ContextListener и объявить все это в XML-дескриптор (web.xml).
Вы также можете изменить свое приложение на использование контейнера Spring, а затем позволить серверу приложений запустить Spring, который затем запустит ваше приложение.
Это даст вам возможность по-прежнему запускать / тестировать ваше приложение без сервера приложений, если вам это необходимо, и в то же время иметь возможность использовать его ресурсы во время выполнения.
Нет причин делать это, кроме глупых указов руководства. Не поддавайтесь таким указам.
- Качающиеся экраны будут преобразованы в JSP
- Логика будет работать на сервере, получающем данные со страниц JSP.
- Вы можете использовать Spring MVC Framework.
Наличие целого сервера приложений только для запуска одной банки - это все равно, что нанять команду по обслуживанию гоночного автомобиля для Volkswagen 1980-х годов. Это было бы просто излишним. Если вам не нужны какие-либо функции с сервера приложений для вашего jar, зачем вам вообще задумываться об его использовании?
Applicationserver имеет определенные функции, но также требует больше знаний и ресурсов для настройки и обслуживания. Использование одного ради сервера приложений не всегда ответ.
Если вам не нужны службы HTTP веб-контейнера (например, сервлеты, JSP, JSF) или многие службы сервера приложений (например, EJB, JMS и т. Д.), То нет причин для обновления этого приложения. на сервер Java EE. Вы не указали мотивацию для этого.
Размещение приложения в веб-контейнере, таком как Tomcat, или на сервере приложений, таком как WebSphere, может обеспечить вам улучшенную управляемость, но при значительных затратах.
Альтернативой является использование оболочки JavaService, как это определено в статье DDJ Майка Дженнингса в марте 2000 года. Я использовал этот подход; затем добавил необходимые мне функции, по частям. Доступны коммерческие версии такого подхода (например, программное обеспечение Tanuki). Это может привести к очень легкому подходу, если вам не понадобятся сервисы типа Java EE.