首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java EE 6注入抽象类

Java EE 6注入抽象类
EN

Stack Overflow用户
提问于 2012-05-02 08:04:47
回答 1查看 11.1K关注 0票数 9

在我正在处理的一个JavaEE6项目中,有一个用@EJB注释的字段没有被注入。注入在其他地方都工作得很好。

作为Java EE的新手,我不知道它是否与抽象类中的字段有关,也无法从Glassfish (3.1.2)中找到任何关于为什么没有发生这种注入的输出。

由于dataSourceControl字段为空,在发生NullPointerException之前,服务器日志中不会出现任何错误或警告。我已经通过将日志放入DataSourceControl单例的构造函数中,验证了它正在被实例化。

据我所知,dataSourceControl字段没有被注入,但是日志没有告诉我这是为什么。

代码语言:javascript
复制
public abstract class AbstractDataMap<T> {
  @EJB
  private DataSourceControl dataSourceControl; // This is not being injected

  DataSourceControl getDataSourceControl() {
    return dataSourceControl;
  }
  // Other methods
}

public abstract class AbstractDataMapDBProd<T> extends AbstractDataMap<T> {
  @Override
  protected Connection getDBConnection() {
    return getDataSourceControl().getConnectionX(); // NullPointerException here
  }
  // Other methods
}

@Stateless
public class CountryMap extends AbstractDataMapDBProd<Country> {
  public boolean update(final Country current, final Country legacy) {
    Connection connection = getDBConnection();
    // More code 'n stuff
  }
}

关于在抽象类中定义的注入,我是否遗漏了一些规则?

还有别的叫“noob”的吗?

如果没有明显的错误,有关于如何调试的想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 21:01:45

注入可以在任何类(基类、超类、抽象超类等)中工作。然而,只有当您从容器(即,注入或查找)而不是通过new CountryMap获取CountryMap的实例时,注入才会起作用。如何获取CountryMap实例

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10406032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档