java - 不允许两个无状态 bean 实现单个本地接口(interface)吗?

标签 java ejb-3.0

当本地接口(interface)由两个无状态 bean 实现时,我遇到以下异常,其中一个具有正常功能,另一个具有一些增强功能。

java.lang.RuntimeException: could not resolve global JNDI name for @EJB for container UserBean: reference class: org.app.SecurityServiceLocal ejbLink: duplicated in Some.jar

最佳答案

终于知道为什么会出现这个异常了

我使用@EJB 注释将一个无状态 bean 注入(inject)另一个名为 UserBean 的无状态 bean,代码如下

@Stateless(name="UserBean")
@EJB(name="app/SecurityService",
        beanInterface=SecurityServiceLocal.class)
public class UserBean implements UserRemote{

}

如果您查看注入(inject)细节,我正在注入(inject) SecurityServiceLocal,它由两个无状态 bean 类 SercurityServiceBean 和 SecurityServiceEnhaBean 实现。因此,容器处于歧义状态以决定注入(inject)哪个 bean,因为两者都实现相同的接口(interface)。

这可以通过在@EJB 注释中指定更多信息来解决,例如 beanName 属性值。在那里,您需要使用 bean 名称(在该 bean 级别(或)在 ejb-jar.xml 中声明)来提供需要注入(inject)的无状态 bean 类。检查代码以识别注入(inject)映射中的更改

@Stateless(name="UserBean")
@EJB(name="app/SecurityService",
        beanInterface=SecurityServiceLocal.class,
        beanName="SecurityServiceEnha")
public class UserBean implements UserRemote{

}

关于java - 不允许两个无状态 bean 实现单个本地接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2077610/

相关文章:

java - 将 mongo search 从 runCommand 升级为使用 Java 驱动程序查找

java - 为什么在这个例子中使用synchronized(Java并发)是不正确的?

java - 如何从项目列表中检索选定的项目?

performance - EJB3 - Session Bean调用另一个bean接口(interface)的方法

java - 在不使用线程的情况下处理 EJB3 中的超时

java - EJB 2.0 与 EJB 3.0

java - 从 Elasticsearch 在 Elasticsearch Painless 脚本参数中传递动态值

java - Servlet 只读取 Excel 文件的前两行

java - 如何实现Singleton-like EJB3.0 bean?

java - JBoss 5.1.0 GA 中的@EJB?