【发布时间】:2017-09-05 07:17:42
【问题描述】:
问题: 在注入带有 2 个子类的 Bean(在过滤器中)时,我遇到了一些意外行为,这些子类是我在其他两个类(Servlet)中注入的。现在注入的超类可以在运行时持有对子类实例的引用(随着每次容器重启而改变)。
我一定犯了一个严重的错误,但我无法弄清楚到底是什么。
其他信息:
我使用 Java EE6
类结构:
在过滤器中,我将包含随机实例的超类注入其中一个子类或超类:
@EJB
private ClientLogger clientLogger;
超类是这样开始的:
@Stateless
@LocalBean
public class ClientLogger implements HcpEntityBeanLogger<Client> {
private Client client;
public ClientLogger(){
}
....
}
我将这个子类 bean 注入到我的一个 Servlet 中:
@Stateless
@LocalBean
public class AdminClientLogger extends ClientLogger {
public AdminClientLogger(){
}
...
}
解决方案尝试:
据我所知,最后注入的子类将是 clientLogger 引用的实例,但是为什么,为什么我不能有 3 个不同的实例并在这里使用继承?
编辑: 当注入多个实现相同接口的查询 bean 时,我再次遇到了这个问题,它们都将持有对同一个实例的引用。
解决方案是添加 beanName wenn 注入 EJB 接口
@EJB(beanName="name of your bean class or name specified in @Stateless(name=".."))
【问题讨论】:
标签: java inheritance ejb javabeans code-injection