其他分享
首页 > 其他分享> > 将EJB 3注入Spring Bean

将EJB 3注入Spring Bean

作者:互联网

我试图将EJB注入Spring(3.1.2)服务(在不同的WAR中)
两者都非常简单(删除方法以简化示例):

EJB:

@Remote
public interface MyBean {
}

@Singleton
public class MyBeanImpl implements MyBean{
}

服务:

@Service
public class MyServiceImpl implements MyService{
}

乍一看,事情很简单,但我试过:

@EJB(lookup = "java:global/ejbApp/MyBeanImpl!com.my.MyBean")
private MyBean myBean;

它没有用.然后我也尝试过:

@EJB(mappedName = "java:global/ejbApp/MyBeanImpl!com.my.MyBean")
private MyBean myBean;

@Resource(mappedName = "java:global/ejbApp/MyBeanImpl!com.my.MyBean")
private MyBean myBean;

但都没有奏效.

我设法使用以下方法注入我的EJB:

<jee:jndi-lookup id="myBean" jndi-name="java:global/ejbApp/MyBeanImpl!com.my.MyBean" />

在我的弹簧配置和服务中:

@Autowired
private MyBean myBean;

但我真的不喜欢这个解决方案.我想在一些注释中使用我的JNDI路径,例如:

@EJB(lookup = MyBean.JNDI_NAME)
private MyBean myBean;

解决方法:

我们找到了非常好的简单解决方案.
进入spring配置文件一个必须放:

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
    <property name="alwaysUseJndiLookup" value="true" />
</bean>

这使得spring能够在JNDI中搜索使用@Resource注释的bean.
所以现在可以这样做:

@Resource(mappedName = MyBean.JNDI_NAME)
private MyBean myBean;

标签:ejb-3-1,spring,jboss7-x
来源: https://codeday.me/bug/20190927/1823822.html