我正在尝试将 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" />
在我的 spring 配置和服务中:
@Autowired
private MyBean myBean;
但我真的不喜欢这个解决方案。我想在一些注释中包含我的 JNDI 路径,以便能够执行以下操作:
@EJB(lookup = MyBean.JNDI_NAME)
private MyBean myBean;