Я создал приложение Java EE и добавил сессионный компонент без состояния в проект EJB. Проект EJB является зависимым от проекта web/WAR, и я добавляю EJB, который я создал в проекте EJB, в одном из моих сервлетов. Это прекрасно работает, и я могу развернуть и вызвать методы этого EJB в сервлете проекта веб-приложения. Моя путаница заключалась в том, что я думал, что EJB должны иметь интерфейс в контейнере EJB, где они были локальными или удаленными. Однако в моем примере мне вообще не нужен интерфейс и он мог вызвать EJB напрямую, где, по-моему, мне нужен локальный интерфейс, по крайней мере?Корпоративное приложение EJB не нуждается в интерфейсе EJB
ответ
С 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
- 1. LazyInitializationException в интерфейсе SpringMVC с бэкэндом EJB
- 2. Использовать кеш в удаленном интерфейсе EJB
- 3. Стандартное развертывание Приложение EJB
- 4. Как искать EJB удаленно из приложения EJB в Java-приложение?
- 5. Инъекция экземпляров ejb в сервлет, @EJB вводит null - JBoss6
- 6. EJB - Поиск не удалось для 'ejb/BookRequestBean'
- 7. EJB не может вводить другие EJB
- 8. EJB вызывает другой метод EJB
- 9. EJB 2.0 VS EJB 3.0
- 10. EJB 2.1 Vs EJB 3.1
- 11. Ejb refrences еще один ejb
- 12. Приложение AngularJS только с EJB
- 13. Разверните корпоративное приложение на движке Google.
- 14. Перемещенный EJB в библиотеку, теперь EJB не найден
- 15. EJB lookup from Play приложение
- 16. EJB 3.1 @EJB Инъекция в POJO
- 17. Как организовать корпоративное приложение JEE6, предлагающее веб-службы REST?
- 18. EJB 3.1 - Использование @EJB внутри EJB - возможно ли это?
- 19. Интерфейс-EJB не инжектирован в no-interface-EJB
- 20. NetBean EJB Клиентское приложение не удалось построить
- 21. Позвоните EJB 3.1 от клиента EJB 2
- 22. Что такое аннотацию для EJB исх в EJB 3
- 23. EJB не впрыскивается
- 24. Отмена вызова @Asynchronous EJB
- 25. Добавление EJB в веб-приложение в netbeans
- 26. @EJB аннотаций не работает для инициализации бина в приложении EJB
- 27. Использование EJB, ClientEJB не распознает домен объекта в EJB проекта
- 28. Масштабируемость удаленного EJB и локального EJB
- 29. Доступ к удаленному EJB из другого EJB
- 30. EJB Сцены транзакций сеанса/методов EJB
Спасибо, не знал об этом изменении. Будет ли лучше использовать локальные интерфейсы? И если представления без интерфейса функционируют так же, как и локальные представления inteface, какова точка локальных интерфейсов? – joe
Если у вас есть удаленный интерфейс, вам нужно указать локальный, если вы хотите использовать свой сеансовый компонент локально. Если вы не выставите свои бобы удаленно, я думаю, вам не нужно создавать локальный. – Jaumzera