Сервер приложений Java EE 6 для веб-профиля с JavaMail - PullRequest
5 голосов
/ 07 марта 2012

У меня есть веб-приложение Java EE, использующее функции из веб-профиля Java EE 6 + сервис EJB Timer и JavaMail. В настоящее время я использую полный профиль GlassFish 3.1.2 во время разработки, но я хочу исследовать альтернативы, потому что:

  • Кажется, есть ошибка с многокомпонентными формами в GlassFish 3.1.2 и GlassFish 3.1.1, у меня были другие проблемы, исправленные в 3.1.2. (поймать 22 ...) Эта ошибка исправлена ​​банкой в ​​билете.
  • Похоже, что для серверов приложений, поддерживающих "веб-профиль", гораздо больше возможностей, чем для "полного профиля", а первый должен быть намного более легким.
  • Я хочу выбрать лучший вариант для развертывания

В настоящее время я использую функцию встроенного сервера приложений GlassFish для тестирования, поэтому желательно использовать аналогичное средство для любой альтернативы. В худшем случае, я могу жить с прикосновением к GlassFish, встроенному для автоматизированных тестов.

Можно ли "добавить" модуль реализации службы JavaMail и EJB Timer Service на сервер приложений, реализующий только веб-профиль? Это хорошо работает? Если это невозможно, есть ли альтернативы использованию JavaMail и службы таймера EJB?

Какие серверы приложений, отвечающие моим требованиям, вы можете порекомендовать?

Наконец, я рассмотрел возможность использования функции асинхронного вызова EJB, которая не является частью EJB lite. Если я правильно понял, нельзя запускать потоки вручную при запуске в контейнере Java EE. В таком случае, как можно запускать асинхронные операции в веб-профиле Java EE?

Я все еще относительно новичок во всей экосистеме и терминологии Java EE, поэтому, пожалуйста, не стесняйтесь просить меня прояснить какие-либо части моего вопроса.

Поддержка документов

редактировать 1

В соответствии с Apache TomEE doc , TomEE, TomEE + и OpenEJB будут отвечать всем требованиям.

редактировать 2

На основе заметок о выпуске AS 7.1 , этой статьи и этой проблемы JBoss AS 7.1.0, кажется, реализует все необходимые мне функции.

Ответы [ 3 ]

4 голосов
/ 09 марта 2012

Прежде всего, я никогда не использовал GlassFish, поэтому я не могу дать вам никакой информации об этом.

Я не уверен, что ваше приложение создается для реальной производственной среды, но jboss 7.1 пока не имеет официальной коммерческой поддержки на случай возникновения проблем.

Jboss 5.1, оптимизированный для JDK 6, имеет коммерческую поддержку через Red Hat.

При этом экземпляр jboss может быть полностью настроен и очень гибок. Это означает, что вы можете начать с веб-профиля и добавлять / удалять услуги, которые вам не нужны. (Удаление неиспользуемых служб всегда рекомендуется для производственных сред.)

Вот wiki , который предоставляет информацию об уменьшении профиля jboss в jboss 5. В нем указаны все шаги, необходимые для удаления службы. Операция похудения также может быть отменена, так что вы можете добавить все, что вам нужно, в определенный профиль.

Итак, есть два основных подхода:

  • Начните с профиля, такого как 'default' или 'all', и начните удалять службы, которые не нужны для вашего приложения
  • Начните с «минимального» или «веб-профиля» и начните добавлять услуги, которые отсутствуют в вашем приложении. Вы копируете сервисы из профиля, в котором он есть. (Лично я предпочитаю такой подход)

Добавление и удаление сервисов может быть методом проб и ошибок. Вам нужно найти в Интернете правильное руководство по услуге, которую вы пытаетесь добавить или удалить. (Совет, всегда выполняйте свои операции с копией профиля, предоставленной AS, и документируйте каждый шаг. Таким образом, вы можете начать все сначала, если вы сделали что-то, что кажется необратимым.)

Надеюсь, это поможет.

3 голосов
/ 09 марта 2012

Том прав, что JBoss AS7 пока не имеет коммерческой поддержки. Однако, это идет - AS7 выпускается как EAP 6 (досадно!), И входит в бета-версию через несколько дней . Версия для сообщества была выпущена в течение нескольких месяцев, и, хотя она имеет много нюансов, она в основном работает довольно хорошо.

AS7 имеет гораздо более модульную архитектуру, чем предыдущие версии. Идея состоит в том, что вы загружаете только те модули, которые вам нужны, а это означает, что, хотя это полная реализация профиля (начиная с версии 7.1), если вы используете только функции веб-профиля, вы оплачиваете только стоимость выполнения веб-профиля. У вас по-прежнему есть биты, которые вам не нужны, но диск дешевый (7.1.0 - это 125 МБ олл-ин - вряд ли огромный).

Боюсь, я не пользовался никакими другими полноценными серверами приложений (по крайней мере, в последнее десятилетие) и поэтому не могу их комментировать. Я считаю, что Geronimo поддерживает полнофункциональный EE6, поэтому, если вам не нужна коммерческая поддержка, это может стоить посмотреть.

Я провел некоторое время, используя установки на основе Tomcat. Да, вы можете добавить достаточно дополнений к Tomcat, чтобы создать своего рода «бионический Tomcat», который по сути является сервером приложений, но делать это самостоятельно - это работа, которую вы на самом деле не должны делать - чистые отходы. Я не использовал TomEE. Я вообще не большой поклонник Tomcat, должен признать.

2 голосов
/ 13 марта 2012

Как вы заявляете, OpenEJB / TomEE определенно отвечают всем требованиям.Вот некоторые примеры, которые вам могут понравиться на основе упомянутых вами вещей:

Чтобы настроить ресурс JavaMail в вашем тестовом примере, просто сделайте так:

Properties p = new Properties();
p.setProperty("superbizMail", "new://Resource?type=javax.mail.Session");
p.setProperty("superbizMail.mail.smtp.host", "mail.superbiz.org");
p.setProperty("superbizMail.mail.smtp.port", "25");
p.setProperty("superbizMail.mail.transport.protocol", "smtp");
p.setProperty("superbizMail.mail.smtp.auth", "true");
p.setProperty("superbizMail.mail.smtp.user", "someuser");
p.setProperty("superbizMail.password", "mypassword");

EJBContainer.createEJBContainer(p);

Затем введите JavaMailСессия в ваш EJB через:

@Resource
private Session superbizMail;

За кулисами «superbizMail».часть сбрасывает все свойства, и полученный набор свойств передается в javax.mail.Session.getDefaultInstance(Properties props).Полученный Session - это то, что вводится в @Resource ссылку

...