jakarta-ee - Java EE 6 注入(inject)抽象类

标签 jakarta-ee glassfish ejb-3.1

在我正在处理的 Java EE 6 项目中,有一个用 @EJB 注释的单独字段没有被注入(inject)。注入(inject)在其他任何地方都可以正常工作。

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

在发生 NullPointerException 之前,服务器日志中没有错误或警告,因为 dataSourceControl 字段为空。我已经通过将日志记录到它的构造函数中来验证 DataSourceControl Singleton 正在被实例化。

据我所知,dataSourceControl 字段没有被注入(inject),但日志没有给我任何理由。

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
  }
}

关于抽象类中定义的注入(inject),我是否遗漏了任何规则?

还有什么叫“菜鸟”的吗?

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

最佳答案

注入(inject)适用于任何类(基类、父类(super class)、抽象父类(super class)等)。但是,只有获得 CountryMap 的实例,注入(inject)才会起作用。从容器(即注入(inject)或查找)而不是通过 new CountryMap .您如何获得 CountryMap 的实例? ?

关于jakarta-ee - Java EE 6 注入(inject)抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406032/

相关文章:

maven-2 - Maven Glassfish 插件 : Deploy application as exploded directory/folder

java - 如何通过基于ejb 3.1注释的邮件发送

postgresql - 异常 : relation does not exist with postgresql table/sequence in ejb3

java - 替代资源包属性文件

jakarta-ee - Swagger 2.x JaxrsAnnotationScanner 找不到位于 ear 中的资源类

java - Maven 不编译 webapp

json - GlassFish 4.0/Jersey 2.0 - JsonStructureBodyReader 的 NoClassDefFoundError

java - 在 Struts 中将映射属性与索引属性相结合

java - 在 JPA 实体上查找声明的 java.util.Map 字段的泛型类型时出现 ClassNotFoundException (GlassFish 3)

mysql - Ejb3.1 中的 setFirstResult() 和限制失败