2016-04-27 2 views
0

Я создал приложение Java EE и добавил сессионный компонент без состояния в проект EJB. Проект EJB является зависимым от проекта web/WAR, и я добавляю EJB, который я создал в проекте EJB, в одном из моих сервлетов. Это прекрасно работает, и я могу развернуть и вызвать методы этого EJB в сервлете проекта веб-приложения. Моя путаница заключалась в том, что я думал, что EJB должны иметь интерфейс в контейнере EJB, где они были локальными или удаленными. Однако в моем примере мне вообще не нужен интерфейс и он мог вызвать EJB напрямую, где, по-моему, мне нужен локальный интерфейс, по крайней мере?Корпоративное приложение EJB не нуждается в интерфейсе EJB

ответ

1

С EJB 3.1 вам больше не нужны интерфейсы EJB для локальных служб. Любой класс POJO, аннотированный @Stateless, @Stateful или @Singleton будет компонентом сеанса предприятия.

Возврат к естественному контракту Договор класса включает в себя все его общедоступные методы. Публичные методы предназначены для использования клиентами . Вид не-интерфейса с Enterprise JavaBeans 3.1 боба определяются точно так, как следует в главе 3.4.4 EJB 3.1 спецификации (JSR 318):

«... вид нет-интерфейса сессионного компонента является изменением Локальный вид , который раскрывает общедоступные методы класса bean без использования специального бизнес-интерфейса ... »

Все частные методы скрыты. Методы с закрытыми данными и защищены видимостью только для классов в одном пакете , и они обычно доступны только для целей тестирования. Тест JUnit класс находится в том же пакете, что и «Тест класса» (CUT) и , выбивает неудобные ссылки, обычно обращаясь непосредственно к приватным или защищенным полям .

Проверил: http://www.oracle.com/technetwork/articles/java/intondemand-1444614.html

+0

Спасибо, не знал об этом изменении. Будет ли лучше использовать локальные интерфейсы? И если представления без интерфейса функционируют так же, как и локальные представления inteface, какова точка локальных интерфейсов? – joe

+0

Если у вас есть удаленный интерфейс, вам нужно указать локальный, если вы хотите использовать свой сеансовый компонент локально. Если вы не выставите свои бобы удаленно, я думаю, вам не нужно создавать локальный. – Jaumzera

Смежные вопросы