用作注入bean实例时有关ejb会话bean行为的问题。 我不能100%确定这是如何运作的。我想从实践和阅读有关该主题的文件。 我想知道容器是如何处理@EJB注释的。
会话bean具有接口,impl类,部署描述符。我们将它们打包在ejb jar中。
答案 0 :(得分:1)
java:global
,java:app
和java:module
名称可用,并且从这些查找返回的对象必须是EJB引用/代理。 / LI>
@EJB(lookup="java:app/...")
时)。java:
时未定义,但在组件实例上调用生命周期回调或业务方法之前,内容必须可用。@EJB
/ <ejb-ref>
/ <ejb-local-ref>
确保查找始终返回EJB引用/代理,而不是实际的bean实例。代理确保在调用实际的bean实例之前执行所有容器服务(安全性,事务,远程处理等)。对于SLSB,将调用任意bean实例,并且可能会调用相同或不同的实际实例,具体取决于线程,并发,时序,特定于供应商的配置等。对于SFSB,将调用具有特定标识的Bean实例;您可能会获得相同的bean实例,但如果EJB容器已钝化实际的bean实例,则可能不会,但重新激活应该会导致具有等效状态的实例。对于EJB 3.1中的单例会话bean,可以保证将调用单例bean实例。Context.lookup
后跟Field.set
(或Method.invoke
进行setter方法注入)来实现。无论如何,实例处理如上所述。