2012-12-21 2 views
7

Может ли компонент EJB реализовать несколько пользовательских интерфейсов, кроме бизнес-интерфейсов (@Local, @Remote) или No-Interface view (@LocalBean)?Может ли компонент EJB реализовать несколько интерфейсов?

Например, определите два интерфейса: UserInterface1, UserInterface2, без аннотаций.

Законно ли это осуществить:

@Stateless 
public class MyBean implements UserInterface1, UserInterface2 { ... 

Тогда у меня есть другая путаница:

@Stateless 
public class MyBean implements Runnable { ... 
//inside I won't try to manage thread 
} 

Является ли это законным или незаконным, я обнаружил, что GlassFish поддержку этой ситуации.

ответ

6

Данный пример является незаконным, но тем не менее принят некоторыми реализациями (серверами приложений).

David Blevins начал a thread about это в списке рассылки EJB некоторое время назад.

EJB 3.2 сделает правила более понятными для этой темы. См. What's new in EJB 3.2 ? - Java EE 7 chugging along! (см. Раздел Упрощен порядок определения всех локальных/удаленных видов компонента)

+0

Что делать, если я просто реализую один интерфейс (все еще без аннотации)? Этот интерфейс может быть определен пользователем или интерфейсом из некоторых java-пакетов (например, java.lang.) Является ли эта реализация незаконной? – user1684651

+0

1 интерфейс кажется законным без использования каких-либо аннотаций. См. Http://docs.oracle.com/javaee/6/api/javax/ejb/Local.html –

+2

Ответ хороший, хотя он не отвечает на вопрос темы, на который я бы ответил: «Да, EJB может реализовывать несколько интерфейсов, но в этом случае вы должны явно указать, какие интерфейсы являются бизнес-интерфейсами, используя '@ Local' или ejb-jar.xml. –