我大致知道这个构造的作用:它创建一个SomeType EJB并将该对象注入另一个EJB.
@EJB(name="name1")
SomeType someVariable
Run Code Online (Sandbox Code Playgroud)
现在我有一个类似于这样开始的类:(我给出所有类级别的注释,即使我认为只有@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
Run Code Online (Sandbox Code Playgroud)
这是做什么的@EJB
?他们可能从JNDI获取或创建"name1"......对象,但他们在哪里放置结果?我没有看到.lookup
任何附近的电话,但代码库是巨大的,所以我不太确定这一点.
奖金问题:我认为这两个@Transaction
注释只是重复默认值?
更新:此时多个人声称@EJBs
是专有扩展.它不是.它是java EE5的核心部分.有关详细信息,请参阅JavaDoc..它只是个别@EJB
注释的容器.
我相信声称这些EJB注释的每个人都会进行查找.我只是想知道这次查找结果会发生什么.
Bre*_*ail 39
该@EJB
注解(和@Resource
,@WebServiceRef
等),有两个目的:
@EJB(name="myEJB")
创建一个引用java:comp/env/myEJB
.如果您注释一个字段而没有指定名称,那么它会创建一个引用java:comp/env/com.example.MyClass/myField
.如何解决引用的方式各不相同,无论引用是针对a lookup("java:comp/env/myEJB")
还是由于注入而解决:
lookup
属性需要JNDI查找才能解析目标.mappedName
,指定为特定于供应商.这通常通过执行查找来实现.beanInterface
或字段类型)仅由应用程序中的单个EJB实现,那么EJB规范要求它回退到那个.java:comp/env/myEJB
可能导致myEJB
在服务器命名空间中查找). 归档时间: |
|
查看次数: |
79461 次 |
最近记录: |