Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee JavaEE6注入抽象类_Jakarta Ee_Glassfish_Ejb 3.1 - Fatal编程技术网

Jakarta ee JavaEE6注入抽象类

Jakarta ee JavaEE6注入抽象类,jakarta-ee,glassfish,ejb-3.1,Jakarta Ee,Glassfish,Ejb 3.1,在我正在处理的一个JavaEE6项目中,有一个单独的字段没有被注入@EJB。注射在其他地方效果良好 作为JavaEE的新手,我不知道它是否与抽象类中的字段有关,也找不到Glassfish(3.1.2)关于为什么不发生这种注入的任何输出 在发生NullPointerException之前,服务器日志中没有错误或警告,因为dataSourceControl字段为null。我已经验证了DataSourceControl Singleton是通过将日志记录放在其构造函数中进行实例化的 据我所知,data

在我正在处理的一个JavaEE6项目中,有一个单独的字段没有被注入@EJB。注射在其他地方效果良好

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

在发生NullPointerException之前,服务器日志中没有错误或警告,因为dataSourceControl字段为null。我已经验证了DataSourceControl Singleton是通过将日志记录放在其构造函数中进行实例化的

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

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
  }
}
公共抽象类AbstractDataMap{
@EJB
私有DataSourceControl DataSourceControl;//这不是注入
DataSourceControl getDataSourceControl(){
返回数据源控制;
}
//其他方法
}
公共抽象类AbstractDataMapDBProd扩展了AbstractDataMap{
@凌驾
受保护的连接getDBConnection(){
返回getDataSourceControl().getConnectionX();//此处为NullPointerException
}
//其他方法
}
@无国籍
公共类CountryMap扩展了AbstractDataMapDBProd{
公共布尔更新(最终国家/地区当前、最终国家/地区遗留){
Connection=getDBConnection();
//更多的代码
}
}
关于在抽象类中定义的注入,我是否遗漏了一些规则

还有什么叫“noob”的吗


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

注入的想法都可以在任何类(基类、超类、抽象超类等)中使用。但是,只有从容器(即注入或查找)而不是通过
newcountrymap
获取
CountryMap
的实例,注入才会起作用。如何获取
CountryMap
的实例?

如果您从容器(即注入或查找)而不是通过
new CountryMap
获取
CountryMap
的实例,则此操作应该有效。你是如何获得CountryMap的实例的?B邮件,你解决了!我沿着代码的另一个方向返回,我的CountryMap(和其他Map)类正在被手动实例化。@B邮件能否请您在回复中给出一个答案,以便我将其标记为正确?谢谢。我添加了一个答案,很高兴它有帮助。总之:在抽象类中定义的注入是可能的。不要像我那样手动实例化bean,因为这样实例就不是容器管理的,注入也不会发生。