我大致知道这个构造的作用:它创建一个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 次 |
| 最近记录: |