Java EE без сервера приложений - PullRequest
5 голосов
/ 25 марта 2010

Поскольку в EJB 3 у нас есть встраиваемые контейнеры EJB, реализации JPA можно использовать без сервера приложений, есть Weld для контекстов и внедрения зависимостей и так далее.Поскольку во многих системах доступен только Tomcat, мне интересно, можно ли использовать Java EE без сервера приложений, но с контейнером сервлетов, таким как Tomcat.

Что мне нужно сделать, чтобы настроить среду Java?Какие недостатки вы видите?

Ответы [ 4 ]

5 голосов
/ 01 февраля 2012

Обратите внимание, что Tomcat является сервером приложений. Тем не менее, в октябре мы выпустили Apache TomEE , который является Tomcat с добавленными недостающими частями JavaEE, а затем сертифицирован Java EE 6 с использованием официального TCK от Oracle.

Стек эволюционировал из того, что раньше называлось просто «OpenEJB / Tomcat», который был полезным стеком с дурным именем :) Обычно игнорируется из-за части «EJB», в то же время он также доставляет транзакции, JMS, WebServices и больше для Tomcat. Новое имя намного лучше, и теперь оно официально сертифицировано, как JBoss или GlassFish. Мы очень рады его будущему.

2 голосов
/ 26 марта 2010

Если я хорошо понимаю, вы хотите использовать EJB3 / JPA в контейнере сервлета.

Существуют не только автономные реализации JPA, но также встраиваемый контейнер EJB3, такой как OpenEJB или Glassfish встраиваемый контейнер . Так что ничто не мешает вам запустить такой встраиваемый контейнер из контейнера сервлета для использования EJB3.

(Примечание: я не знаю всех подробностей о транзакциях. На полноценном сервере приложений. У вас есть JTA и менеджер распределенных транзакций. Этого нет в контейнере сервлетов, таком как Tomcat. JPA работает с JTA и простым JDBC, но я не знаю точно, как работает встраиваемый контейнер без JTA. Тем не менее, я думаю, что это сработает, учитывая, что такие встраиваемые контейнеры также предназначены для модульного тестирования, где, как мне кажется, распределенной транзакции JTA нет менеджер.)

Другим подходом было бы использование Spring. Spring и EJB3 действительно стали очень похожими. Вы можете запустить контейнер Spring DI в контейнере Servlet и получить более или менее выгоду от тех же возможностей, что и EJB3 (декларативные транзакции и т. Д.). Смотрите этот пост о Spring vs. EJB3.

Все эти технологии стали довольно модульными, особенно с профилями Java EE. Вы можете использовать Sevlets, EJB3, JMS, JPA, даже JTA как-то независимо друг от друга. Вы также можете создать среду, в которой вы выбираете те, которые вам нравятся, с помощью Spring или Java EE. Вопрос в том, когда это перестает иметь смысл, а лучше использовать приложение. сервер со всем доступным и легко управляемым. Я думаю, что Servlet / EJB3 / JPA - это предел, если нужно больше, зайдите в приложение. сервер.

1 голос
/ 25 марта 2010

Как правило, вам потребуется некоторый контейнер , даже если этот контейнер не предоставляет сервисы, связанные с Java EE. В конце концов, вам нужен долгоживущий процесс JVM для размещения исполняемого кода. Tomcat и Jetty прекрасно справятся с этой задачей, и в дополнение к базовым сервисам сервлетов предоставят несколько полезных дополнительных функций, таких как пул соединений.

0 голосов
/ 04 сентября 2014

J2EE без сервера приложений был представлен мной несколько лет назад (Гай Пардон, из Atomikos), с помощью этой оригинальной статьи: http://www.onjava.com/pub/a/onjava/2006/02/08/j2ee-without-application-server.html - в то время был посвящен JMS и JDBC.

В общем, его легко настроить благодаря Spring и Hibernate. На самом деле, я был вдохновлен сделать это после выполнения проекта Java EE и столкновения с адом XML, связанным с серверами приложений и EJB-компонентами. Без сервера приложений все вдруг стало намного проще и более тестируемым.

Если вам нужна установка Tomcat, то это может быть немного сложнее в настройке, но недавно Atomikos представила готовую интеграцию Tomcat как часть своего коммерческого предложения на http://www.atomikos.com.

НТН

...