我大致知道这个结构的作用:它创建一个SomeType EJB,并将该对象注入到另一个EJB中。
@EJB(name="name1")
SomeType someVariable
现在我有一个类,其代码开头如下:(我给出了所有类级别的注释,尽管我认为只有@EJBs
是相关的)
@Remote(SomeClass.class)
@Stateless(name="someName")
@EJBs({@EJB(name="name1",beanInterface=Type1.class),
@EJB(name="name2",beanInterface=Type2.class)})
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@TransactionManagement(TransactionManagementType.CONTAINER)
public class X extends Y{
//code
这里的@EJB
是用来做什么的?它们可能从JNDI获取或创建名为"name1"的对象,但结果放在哪里呢?我没有看到任何.lookup
调用,但是代码库很庞大,所以我对此不太确定。
附加问题:我认为这两个@Transaction
注释只是重复默认值吗?
更新:目前有多人声称@EJBs
是专有扩展。事实并非如此。它是Java EE5的核心部分。有关详细信息,请参见JavaDoc。它只是单个@EJB
注释的容器。
我相信每个使用EJB注释的人都会查找。我只是想知道此查找的结果会发生什么。
@EJBs
和这样的用法。 - Amit Deshpande