Стек Jetty 8 + EJB 3.1 + JTA + CDI + JPA 2? - PullRequest
8 голосов
/ 15 апреля 2011

Может кто-нибудь сказать мне, если в настоящее время возможно "склеить" частичный веб-профиль Java EE 6 через Jetty?Я нашел много статей об интеграции автономных контейнеров EJB 3, JTA-провайдеров и т. Д. Со старыми версиями Jetty, поэтому я хотел бы знать, смогу ли я заставить все это работать вместе.Я хотел бы собрать Servlet 3.0 + CDI + EJB 3.1 + JTA (при необходимости все, что мне действительно нужно, это декларативное управление транзакциями) + среду JPA 2 через Jetty 8 (или Tomcat 7, если альтернатив Jetty нет).Мои вопросы: это можно сделать?Кому-нибудь удалось это сделать?Какие-нибудь статьи о совместной работе OpenEJB, Atomikos, Weld, EclipseLink и Jetty (или любого другого подобного стека)?Есть ли какие-нибудь волшебные pom.xml файлы «сделай все»?

PS: Да, я знаю, что могу просто использовать GlassFish (что мне очень нравится).Мне просто интересно, насколько сложно было бы получить что-то подобное при работе с контейнером сервлетов, и как эти две среды сравниваются по сложности, производительности, размеру, скорости развертывания, потреблению аппаратных ресурсов и т. Д.

Ответы [ 4 ]

10 голосов
/ 04 мая 2011

Я бы описал это как еще на ранних стадиях, но вот что мы имеем до сих пор:

http://svn.apache.org/repos/asf/openejb/trunk/openejb3/assembly/openejb-jetty/

Обратите внимание, что Apache TomEE живет по схожему пути, то есть 'assembly / openejb-tomcat'. Планируется назвать версию Jetty Apache JetSet и сделать ее полностью встраиваемой. Большинство людей с коммитом в настоящее время работают над тем, чтобы Apache TomEE получил официальную сертификацию Java EE 6 Web Profile. Я бы описал эту работу на поздних стадиях. В Amazon EC2 у нас есть отличная настройка для запуска TCK веб-профиля с TomEE с использованием сотен экземпляров EC2 t1.micro. Это довольно мило. Соглашение TCK с Apache и Oracle не позволяет нам публично делиться доступом. Однако любой коммиттер Apache может подписать NDA для получения доступа.

Хорошо, поэтому я упоминаю все это о TomEE, потому что после того, как мы закончим с версией Tomcat, планируется сделать это снова с Jetty (JetSet). Многие из нас, коммиттеров, например, я и Джонатан Галлимор, предпочитают Jetty с большим отрывом. Но так как код интеграции Tomcat был намного дальше и имел больше пользователей, мы решили сначала закончить его. Существует невероятный объем работы, не относящийся только к Tomcat, который мы сможем использовать в версии Jetty; легальный доступ к TCK, кучи кода для его запуска, больше кучи кода для его автоматизации и многочисленные интеграционные биты, которые являются общими и не характерными для Tomcat.

Все это говорит о том, что нет причин, по которым другим приходится ждать работы над версией Jetty только потому, что большинство из нас все еще заканчивают версию Tomcat. Проекты Apache должны рассматриваться как работающие вместе люди, а не такие компании, как Oracle, Redhat или VMWare. Это может быть как хорошо, так и плохо. Хорошая часть заключается в том, что если вы или кто-то еще хотите взломать версию Jetty, вы можете сделать это прямо сейчас. Вам придется отправлять патчи на некоторое время, пока вы не заработаете коммит, но когда кто-то другой выполняет фактическую команду фиксации, это не так уж плохо. Если вы начинаете с малого и остаетесь активным и открытым, обычно довольно легко заработать коммит. Ключом к быстрому внесению исправлений является постоянный поток исправлений небольших и средних размеров. Любой шаг вперед или вбок без шагов назад, на мой взгляд, хороший патч. Пока люди могут видеть, куда ты идешь, это достаточно хорошо. Безусловно, более гибкий, чем подход «один большой патч», и позволяет по-настоящему развлечься и развлечься волшебством совместной работы.

Некоторые темы, которые были бы хорошими местами, чтобы поздороваться. Шаг 1 просто поздороваться. Не нужно иметь код под рукой, чтобы говорить в списке разработчиков или воспринимать всерьез:

http://openejb.979440.n4.nabble.com/Jetty-Integration-td1457408.html http://openejb.979440.n4.nabble.com/Jetty-Integration-td2318962.html

4 голосов
/ 27 апреля 2011

В Tomcat этот стек реализован на сервере под названием TomEE (ранее TomTom).

Это компоненты, которые он использует.

Connector    Apache Geronimo Connector
CDI  Apache OpenWebBeans
EJB  Apache OpenEJB
Javamail     Apache Geronimo JavaMail
JPA  Apache OpenJPA
JSF  Apache MyFaces
JSP  Apache Tomcat
JSTL     Apache Tomcat
JTA  Apache Geronimo Transaction
Servlet  Apache Tomcat

Что касается пристани, я не уверен. OpenEJB - ваш единственный вариант для EJB вне контейнера JavaEE6 (AFAIK), и я не уверен, что Jetty на 100% протестирован с этим. Для CDI вы всегда можете использовать что-то вроде Seam.

На мой взгляд, я считаю, что среда Spring будет вашим лучшим вариантом для контейнера Jetty (хотя это только мое мнение). По моему опыту, после попытки заставить Tomcat работать с Open EJB, Spring намного проще настроить.

Вы также должны помнить, что Open EJB на данный момент не реализует весь стек EJB 3.1.

Также Open EJB также не тестировался на Tomcat 7. Так что вы должны остаться с Tomcat 6, если вы идете по этому пути.

2 голосов
/ 26 января 2012

Geronimo - полный стек J2EE, работающий поверх Jetty.

Есть документ по его настройке на https://cwiki.apache.org/GMOxDOC30/configuring-virtual-host-in-jetty.html

2 голосов
/ 30 апреля 2011

OpenEjb не выпустил версию с поддержкой JPA2, хотя их версия для разработки поддерживает JPA2 отлично AFAIK.Я использую встроенный OpenEjb в Jetty6, потому что я не мог заставить свое приложение работать на более новых самолетах.Я думаю, что в настоящее время ведется работа по созданию тесной интеграции OpenEJB с Jetty, такой как TomEE, но это может быть еще далеко ...

...