@Inject @Remote EJB в веб-приложении

Возможно ли @Inject @Remote EJB в веб-приложении? Я использую Glassfish 5 и развертываю EAR (EJB + WAR).

Когда я аннотирую интерфейс EJB с помощью @Local CDI работает, а с @Remote нет.
В чем может быть причина?

Кстати, использование @EJB вместо @Inject работает безупречно, но я готов решить проблему с @Inject.


person LppEdd    schedule 28.06.2018    source источник


Ответы (1)


CDI не может разрешать удаленные компоненты ejb. Согласно спецификации 3.2.2

Неограниченный набор типов bean-компонентов для сеансового bean-компонента содержит все локальные интерфейсы bean-компонента и их суперинтерфейсы. Если сессионный компонент имеет представление без интерфейса, неограниченный набор типов бина содержит класс бина и все суперклассы. Кроме того, java.lang.Object является типом компонента каждого сеансового компонента. Удаленные интерфейсы не входят в набор типов bean-компонентов.

Что вы можете сделать, так это иметь производителя полей для удаленных интерфейсов, если вы должны использовать инъекции CDI, а не @EJB

person maress    schedule 29.06.2018
comment
Благодарю за разъяснение. Я позволю контейнеру управлять зависимостями и буду придерживаться @EJB. - person LppEdd; 29.06.2018