[英]CDI EntityManager injection VS @PersistenceContext entitymanager on an EJB container
[英]CDI Cross container injection
我们很难找到从另一个容器中注入SessionBean的正确方法。
假设我们有两个耳文件earA和earB,以及一个共享的jar:
EARA
@Stateless
public class MyBean implements BeanInterface{...}
EARB
@Stateless
public class OtherBean{
@Inject BeanInterface myBean;
}
apiJar
earA和earB中都存在一个包含BeanInterface的jarfile
我们不想通过@EJB显式使用JNDI名称,因为earB将由外部客户实现和部署。
我们想让earB通过BeanInterface注入MyBean尽可能容易(并且对earA的了解最少)。
CDI无法在EAR中使用。
您可以在EAR B中使用@EJB(lookup=...)
来获取对在EAR A中实现的EJB的引用。
在这种情况下,您不需要知道EAR A中的实现类,只需知道其JNDI名称。 您可能还应该使EAR A中的EJB公开远程接口。
如果将两个EAR部署在不同的服务器实例上,则还需要一些特定于供应商的配置才能执行远程JNDI查找。
您也可以隐藏此@EJB(lookup=...)
并通过执行以下描述的操作使用CDI注入EJB: http : //whoopdicity.blogspot.ro/2014/07/developing-dynamic-jee-service-client。 HTML
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.