Начиная с EJB 3 у нас есть встраиваемые контейнеры EJB, реализации JPA могут использоваться без сервера приложений, существует Сварка для контекстов и внедрение зависимости и так далее. С тех пор во многих системах только доступный Tomcat, интересно, если Java EE мог бы использоваться без сервера приложений, но с контейнером Сервлета как Tomcat.
Что я должен был бы сделать для установки среды Java? Какие недостатки Вы видите?
Обычно вам потребуется какой-то контейнер, даже если этот контейнер не предоставляет услуги, связанные с Java EE. В конце концов, вам нужен долгоживущий процесс JVM для размещения кода, который вы выполняете. Tomcat и Jetty прекрасно справятся с этой задачей и в дополнение к базовым сервисам сервлетов предоставят несколько полезных дополнительных функций, например, пул соединений.
Если я хорошо понимаю, вы хотите использовать EJB3 / JPA в контейнере сервлетов.
Существуют не только автономные реализации JPA, но также встраиваемый EJB3-контейнер, такой как OpenEJB или встраиваемый контейнер Glassfish . Так что ничто не мешает вам запустить такой встраиваемый контейнер из контейнера сервлета для использования EJB3.
(Примечание: я не знаю всех подробностей о транзакциях. На полномасштабном сервере приложений у вас есть JTA и распределенный диспетчер транзакций. У вас этого нет в контейнере сервлетов, таком как Tomcat. JPA работает с JTA и простым JDBC, но я не знаю точно, как встраиваемый контейнер работает без JTA. Тем не менее, я предполагаю, что это сработает, учитывая, что такие встраиваемые контейнеры также предназначены для модульного тестирования, где, я думаю, нет распределенной транзакции JTA manager.)
Другой подход - использовать Spring. Spring и EJB3 действительно стали очень похожи. Вы можете запустить контейнер Spring DI в контейнере сервлетов и получить более или менее те же возможности, что и EJB3 (декларативные транзакции и т. Д.). См. Этот пост о Spring против EJB3.
Все эти технологии стали довольно модульными, особенно с профилями Java EE. Вы можете использовать Sevlets, EJB3, JMS, JPA, даже JTA как-то независимо друг от друга. Вы также можете создать среду, в которой вы выберете те, которые вам нужны, либо с помощью Spring, либо с Java EE. Вопрос в том, когда это перестает иметь смысл и лучше использовать приложение. сервер со всем доступным и легко управляемым.Я думаю, что Servlet / EJB3 / JPA - это предел, если нужно больше, перейдите к приложению. сервер.