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