Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какую роль играет EJB 
:(
    Опции темы
4epT
Дата 2.2.2012, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Всем привет. Подскажите пожалуйста какую роль играет EJB ? Для чего эта технология предназначена ?

И в какой связке чаще всего используют их ?

Спасибо!
PM MAIL   Вверх
Skynin
Дата 2.2.2012, 16:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 1
Всего: 10



Гуглили?

На каком уровне стало непонятно?

Я к тому что ответ на подобный вопрос может получится как в анекдоте:
-- Папа, а почему, когда яблоко откусишь, оно делается коричневым?
-- Дело в том, сынок, что в яблоке имеются различные химические вещества. Одно из них -- железо. Так вот, когда железо вступает с кислородом, находящимся в воздухе, в химическую реакцию, получается окисление. В результате образуется вещество, которое и окрашивает яблоко в коричневый цвет.
-- Папа, а с кем ты сейчас разговаривал?


Конкретизируйте и свой опыт программирования и сам вопрос по EJB
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
4epT
Дата 2.2.2012, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Опыт в java уже более 5 лет. Знаком с spring, hibernate, jsf, servet, jsp, jdbc.

гуглил ) прочитал пару статей ... так как у меня не получается читать на английском, сам не смог до конца понять роль EJB.

Попробую уточнить вопрос.

Вот есть например проекты где используется spring, struts и hibernate. Тут hibernate берет на себя работу с БД, spring управление транзакциями и управление коннектом. Struts в свою очередь обрабатывает action и отдает какой то ответ пользователю.

Вот хотелось бы примерно в таком виде услышать ответ по EJB =) Например используется в такой то свзяке, где выполняет такие то действия и отвечает за это.

Если не правильно что то понимаю, поправьте пожалуйста.



P.S. Видел статью где описывали взаимодействие jsp - servlet - ejb - jdbc. Какая тут архитектура, зачем тут прослойка из ejb ? почему сервлет не может работать напрямую с БД через jdbc ?
PM MAIL   Вверх
ecologist
Дата 2.2.2012, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 5
Всего: 9



EJB - это в какой-то степени Spring с возможностью Dependency Injection, с возможностью управления транзакциями, с возможностью интерсепторов.
PM MAIL   Вверх
COVD
Дата 2.2.2012, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



EJB - спецификация, определяющая стандарт для серверных приложений. На практике оказалось, что она избыточна во многих случаях, слишком сложна и громоздка. Появились и стали популярны как альтернатива EJB упрощенные технологии для конкретных нужд - spring для инициализации, hibernate для маппинга. Но они тоже стали превращаться в монстров, расширяя круг решаемых ими задач. В свою очередь, эта конкуренция способствовала совершенствованию EJB. 
PM MAIL   Вверх
4epT
Дата 3.2.2012, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Тогда в каких случаях лучше применить ejb, а в каких spring + hibernate ?

В ejb разве есть маппинг сущностей на базу ? (как в хибернейте)
PM MAIL   Вверх
troglodit42
Дата 3.2.2012, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.1.2012

Репутация: нет
Всего: нет



EJB состоит из трех частей

Session Beans - предназначены для инкапсуляции логики. Есть Dependency Injection. Есть шедулер задач. Есть управление транзакциями. Есть контейнерный ConcurrencyManagement для Singleton.
Но самое на мой взгляд главное - это Remoting. Т.е. несколько компонетов могут находиться на совершенно разных физических машинах. И все выше перечисленные ососбенности, в том числе и транзакции будут также прозрачно работать, как если бы все были на одном сервере.
Сам использую Сессионные бины в связке с JSF.В них у меня лежит бизнес-логика и коммуникации между модулями. JSF бины только для уровня презентации

Entity Beans - еще эта технология называется JPA. Примерно тоже самое что Hibernate. (Вернее JPA выросла под влиянием Hibernate). javax.persistence аннотации и прочее.

ManagedDriven Beans - JMS. Система асинхронной рассылки сообщении по стратегиям: от пункта к пункту и издатель-подписчик (http://ru.wikipedia.org/wiki/Java_Message_Service). Удобно для гетерогенных систем, когда нет возможности иметь общий интерфейс взаимодействия (если этот интерфейс есть, то имхо удобнее Session EJB)

Сам активно пользовался первыми двумя. Получалась такая прослойка:
JSF - GUI
Session EJB -
   Local - бизнес-логика, управление данными, 
   Remote - для коммуникации между шардами.
Entity EJB - работа с БД.

Также есть возможность написания "JEE Клиента". Это десктоп приложение, которое может распространятся через Java Web Start. Данное приложение может работать напрямую с удаленными EJB компонентами сервера. Вызывая методы удаленных интерфейсов.


Это сообщение отредактировал(а) troglodit42 - 3.2.2012, 12:57
PM MAIL   Вверх
Skynin
Дата 3.2.2012, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 1
Всего: 10



hibernate для ejb не помеха. 

так же и как для spring - это отдельная вещь
поэтому вопрос нужно бы так ставить:
Тогда в каких случаях лучше применить ejb + hibernate, а в каких spring + hibernate ?

Кроме хибера и там и там применяются другие JPA фреймворки. Или парсеро-мапперы типа myBatis

Далее, spring стал популярен ввиду неудобств ejb 2.x
После выхода ejb 3.x нередко можно услышать мнение что spring не нужен, не имеет преимуществ.

Поэтому ответ на "а в каких случаях"
считайте что в любых случаях где уместен spring будет уместен и ejb и наоборот.

Выбирают же по разнообразным "политическим" причинам, не связанными напрямую с техническими преимуществами/недостатками этих подходов (ejb НЕ фреймворк, а спецификация, которую реализуют некоторые сервера приложений. Референсная реализована в GlassFish. А также обычно с отставанием в JBoss и Apache Geromino - а на Geromino основан IBM WebSphere)
Если же сервер приложения в проекте не требуется, а достаточно jsp - spring mvc - jdbc(JPA, ...) то пожалуй и EJB ни к чему для такого проекта


Это сообщение отредактировал(а) Skynin - 3.2.2012, 12:39
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
4epT
Дата 3.2.2012, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Спасибо за ответы )

Заинтересовал JSF + EJB + Entity EJB ...

То есть JSF бины "дергают" Session EJB бины, в свою очередь Session EJB бины используют Entity EJB для доступа к БД. Можете немного подробнее рассказать про Local и про Remote ?

Ммм Remoting это не что то вроде Web сервиса ?
PM MAIL   Вверх
troglodit42
Дата 3.2.2012, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.1.2012

Репутация: нет
Всего: нет



Цитата(4epT @  3.2.2012,  11:09 Найти цитируемый пост)
Ммм Remoting это не что то вроде Web сервиса ? 

По сути да, только вместо Http+SOAP там TCP+CORBA
PM MAIL   Вверх
Vasay
Дата 4.2.2012, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



troglodit42
Цитата

Entity Beans - еще эта технология называется JPA. Примерно тоже самое что Hibernate. (Вернее JPA выросла под влиянием Hibernate). javax.persistence аннотации и прочее.


JPA это совсем не тоже самое, что Hibernate. Это библиотека дающая стандартные методы для общения с разными ORM, такими как Hibernate, TopLink, EclipseLink... Сама по себе она работать не может, ей нужен ORM.  В идеале, при использовании JPA замена одного ORM на другой - вопрос одной строчки в конфиг файле.

Entity Beans - это не технология.  Так называют классы предназначенные для отображения неких сущностей.

JPA вполне может использоваться отдельно не только от EJB но и от JavaEE - в SE проектах.


4epT
Цитата

Подскажите пожалуйста какую роль играет EJB ? Для чего эта технология предназначена ?

И в какой связке чаще всего используют их ?


Очень грубо и поверхностно:

Вы можете создать некий EJB для выполнения определенных задач. Задеплоить его на Java Applicateon Server.  И из других приложений обращаться к его интерфейсам. Причем, эти приложения могут находиться на том же сервере, на другом сервере, или вообще быть JavaSE приложениями. 

  


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
4epT
Дата 4.2.2012, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



А можно немного разъяснить насчет JPA ? Hibernate это просто реализация JPA (если я правильно понимаю). Вчера из нет бинса создавал EJB Entity Beans, а затем при помощи EntityManager делал запросы в БД (не написав не одной строчки на SQL) ...

Пример:

Код

@Stateless
public class ManagementSystemBean implements ManagementSystemLocal
{
    @PersistenceContext
    private EntityManager em;
 
    public Students getStudents(int studentId)
    {
        return em.find(Students.class, studentId);
    }
 
    public void persist(Object object)
    {
        em.persist(object);
    }
}


В данном случае какая реализация JPA используется ? или это можно только в конфиге глянуть ?
PM MAIL   Вверх
Vasay
Дата 4.2.2012, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(4epT @  4.2.2012,  01:47 Найти цитируемый пост)
Hibernate это просто реализация JPA (если я правильно понимаю).


Нет. Hibernate поддерживает работу с JPA....

Грубо говоря - Hibernate - это телевизор. JPA - это универсальный пульт от телевизора, который может работать как с телевизорами марки Hibernate так и с другими телевизорами  smile  

Цитата

В данном случае какая реализация JPA используется ? или это можно только в конфиге глянуть ?


Какой ORM используется можно глянуть в конфиге ( persistence.xml ). Если память не изменяет по умолчанию NetBeans использует EclipseLink

Это сообщение отредактировал(а) Vasay - 4.2.2012, 02:03


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
4epT
Дата 4.2.2012, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Дело в том что у меня нету файла persistence.xml =)

И такой вопрос ... JPA можно использовать без всяких ORM ?  или JPA  это как интерфейс ? =)
PM MAIL   Вверх
Skynin
Дата 4.2.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 1
Всего: 10



Цитата

JPA можно использовать без всяких ORM

JPA как и EJB - это НЕ фреймворк а спецификация. Причем спецификация как раз для ORM фреймворков.
По другому: JPA никак не возможно использовать без ORM, потому что это описание одного из способов как должна быть устроена работа ORM.

Цитата

Дело в том что у меня нету файла persistence.xml

Так его ни у кого вначале нет.
Как нет ни строчки кода.

Цитата
Hibernate это просто реализация JPA (если я правильно понимаю)

Не совсем так. Идеи которые авторы Hibernate принесли в Java сообщество так понравились, что их решили стандартизиривовать.
Причем, вначале, до JPA уже были попытки - JDO.

Вобщем советую вам погуглить. А то придется сюда копипастить много, начиная с соответствующих разделов в википедии.

Цитата

В данном случае какая реализация JPA используется

Неизвестно. Какую в проект включите - такая и будет.

Это сообщение отредактировал(а) Skynin - 4.2.2012, 15:53
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1179 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.