EJB, весна и спячка - PullRequest
       4

EJB, весна и спячка

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

Я некоторое время занимался разработкой стандартной версии Java, и фреймворки и решения были для меня довольно очевидны (Swing для GUI и т. Д.). Недавно я приступил к задаче создания сервера для своих собственных нужд и размещения веб-страницы (помимо того, что сервер будет делать в дополнение к размещению веб-страницы, будет включать персональный хостинг SVN и интеграцию дополнительных веб-функций в существующие и будущие приложения ). Поскольку кодирование только для одного компьютера (то есть распределенных вычислений и т. Д. На самом деле не является проблемой) - я не совсем уверен между Spring, Hibernate и EJB и не очень хорошо разбираюсь в возможностях каждого из них. Информация будет оценена. Я знаю, что Spring - это альтернатива EJB, а Hibernate - это библиотека объектно-реляционного отображения, поэтому EJB объединяет их?

1 Ответ

9 голосов
/ 20 апреля 2011

EJB3 в итоге состоит из 3 типов бинов; Компоненты, управляемые сообщениями, Сессионные компоненты без состояний и состояний и Компонентные компоненты или JPA (архитектура устойчивости Java). Hibernate может использоваться в качестве поставщика JPA, но его не нужно использовать таким образом.

Spring имеет функциональность, которая примерно аналогична компонентам, управляемым сообщениями, и сеансным компонентам без сохранения состояния / состояния, но не имеет эквивалента JPA. Вместо этого он позволяет вам использовать JPA или hibernate напрямую, но если вы объедините Spring с JPA, вам понадобится EJB-контейнер.

Другое отличие состоит в том, что EJB обеспечивается «контейнерами», тогда как spring - это инфраструктура, которую можно развернуть в приложении java se или веб-приложении контейнера java-сервлетов, таких как jetty или tomcat. Это важное различие. Tomcat - это не EJB-контейнер, а только контейнер сервлетов, поэтому, если бы вы использовали только базовый tomcat, вы не могли бы использовать EJB, но вы могли бы использовать Spring, включив необходимые файлы JAR Spring в свое веб-приложение (WEB-INF / lib). ). В этом случае вы также не будете использовать JPA, но вы можете использовать спящий режим.

Некоторые java-серверы, являющиеся EJB-контейнерами, включают weblogic, websphere, jboss, geronimo и glassfish. Tomcat может стать контейнером EJB, если вы объедините его с OpenEJB.

В приложении, которое я сейчас разрабатываю, я использую tomcat + openejb, поэтому у меня есть контейнер EJB, поэтому я могу использовать JPA с OpenJPA в качестве поставщика персистентности. Я использую Spring MVC для разработки веб-приложений и, скорее всего, буду использовать Spring Security в будущем. Я, вероятно, также буду использовать EJB-компоненты Sessionless без состояний для инкапсуляции бизнес-функций, но я также мог бы с легкостью использовать бины Spring service / dao вместо статичных EJB-сессий.

Иногда довольно сложно понять, какие части какой инфраструктуры или контейнера вам следует использовать, и действительно сводится либо к предпочтениям, либо к использованию функциональности в одной, которой нет в другой, или в простоте использования. Другое соображение - использование памяти. Некоторые из контейнеров ejb занимают большие объемы памяти, просто запускаясь без запуска приложений. Это одна из причин, по которой я использовал tomcat + openejb. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...