rus*_*key 8 glassfish java-ee ejb-3.1
在我正在研究的Java EE 6项目中,有一个用@EJB注释的单独字段没有被注入.注射在其他地方工作正常.
作为Java EE的新手,我不知道它是否与抽象类中的字段有关,也不能从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
}
}
Run Code Online (Sandbox Code Playgroud)
我是否有任何关于注射的规则在抽象类中定义?
还有其他什么叫'noob'?
如果没有明显的错误,关于如何调试这个的任何想法?
Bre*_*ail 12
注入将在任何类(基类,超类,抽象超类等)中工作.但是,只有CountryMap从容器中获取实例(即注入或查找)而不是通过注入,注入才会起作用new CountryMap.你是如何获得一个实例的CountryMap?
| 归档时间: |
|
| 查看次数: |
10016 次 |
| 最近记录: |