ejb包内注入

jchrr9hc  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(267)

我有一个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项目中的包之后,它就开始工作了。
有人能解释为什么会这样吗?

cld4siwp

cld4siwp1#

你试过使用标准的@ejb注解吗@ejb bean接口bean;这应该按bean类型为您完成工作。
您应该看到,在容器启动时或使用admingui时,ejb容器是否加载了注入的bean(以及如何加载)。
始终可以执行基本查找:initialcontext().lookup(“the.bean.jndi.name”)。
y、 列夫

相关问题