我有一个ejb
@Stateless
@LocalBinding(jndiBinding = DmsExportExecutor.DEFAULT)
public class InjectedBean implements BeanInterface {
}
实现接口的
@Local
public interface BeanInterface {
public static final String DEFAULT = "package.InjectedBean";
}
我试图把它注入到一个bean中,这个bean位于完全相同的项目和包中。通过@jndiinject注解
public class AnotherBean {
@JndiInject(jndiName = BeanInterface.DEFAULT)
BeanInterface bean;
}
如果这样做,就会引发运行时异常。
java.lang.RuntimeException: Unable to inject jndi dependency: env/package.InjectedBean/bean into property package.InjectedBean. AnotherBean.bean: package.InjectedBean not bound
Caused by: javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: package.InjectedBean not bound]
Caused by: javax.naming.NameNotFoundException: package.InjectedBean not bound
在将我的injectedbean重构到另一个甚至位于同一个maven项目中的包之后,它就开始工作了。
有人能解释为什么会这样吗?
1条答案
按热度按时间cld4siwp1#
你试过使用标准的@ejb注解吗@ejb bean接口bean;这应该按bean类型为您完成工作。
您应该看到,在容器启动时或使用admingui时,ejb容器是否加载了注入的bean(以及如何加载)。
始终可以执行基本查找:initialcontext().lookup(“the.bean.jndi.name”)。
y、 列夫