我大致了解这种构造的作用:它创建了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注释的每个人都会进行查找。我只想知道此查询的结果会发生什么。
该@EJB
注解(和@Resource
,@WebServiceRef
等),有两个目的:
@EJB(name="myEJB")
创建一个引用java:comp/env/myEJB
。如果您为字段添加注释而未指定名称,则它将创建一个引用java:comp/env/com.example.MyClass/myField
。引用的解析方式有所不同,与引用是针对lookup("java:comp/env/myEJB")
注入还是由于注入而解析无关:
lookup
属性需要JNDI查找来解析目标。mappedName
,指定为特定于供应商的。这通常是通过执行查找来实现的。beanInterface
或字段类型)仅由应用程序中的单个EJB实现,则EJB规范要求它回落到那个。java:comp/env/myEJB
可能导致myEJB
在服务器名称空间中进行查找)。问题内容: 尝试序列化作为JPA实体的ESRBRating对象时,我遇到了两个不同的堆栈跟踪(请参见下文)。我正在使用Spring DataJPA。控制器称为服务,服务称为存储库。通过在我的ESRBRating对象上添加@Proxy(lazy = false),我能够解决此问题。 我的主要问题是@Proxy(lazy=false)实际做什么?为什么添加时起作用?这是一个好的解决方案,还是会产生诸如
问题内容: 嵌入式注释如何影响数据库? SQL查询将如何改变? 使用注释的典型用例是什么? 问题答案: 嵌入式注释如何影响数据库? 它根本不影响它。在ORM提供程序层上,来自嵌入式实体的所有字段都 将 与父实体 合并 ,并像对待它们始终在其中声明一样。换句话说,它的工作方式就好像您将所有字段,获取器和设置器直接复制到包含嵌入式对象的实体中一样。 SQL查询将如何改变? 他们不会。您无需更改任何内容
问题内容: 我仍然不清楚Java中注释的用途。最初,我认为它们只是作为文档。但是,我不确定从Google App Engine数据存储中 查看此文档。 @PersistenceCapable(identityType = IdentityType.APPLICATION) 看起来更像是方法签名。 这种注释的目的是什么?它有什么作用? 问题答案: 它们是源级元数据。它们是将信息添加到不是代码的信息中
同事们,我的测试类中有@Ignore注释 我的pom看起来: 结果我收到: [信息]正在扫描项目...[INFO][INFO]-----------------------------------------------------------------------------------------------------------------------------------------
那么在这里@OrderColiv(name="order_id")有什么用呢? 那么在这里@OrderColiv(name="order_id")有什么用呢?