在批处理项目中,我需要在处理之前从数据库中加载一些参考数据。我试图通过在 JobListener 中注入服务 bean 并在“beforeJob”方法中加载数据来做到这一点,但 serviceBean 始终为空。
public interface ServiceBean extends Serializable { ... }
@Stateless
@Named
public class ServiceBeanImpl implements ServiceBean { ... }
@Named
//@Dependent <- Tried adding this
public class CollectJobListener extends AbstractJobListener {
@Inject JobContext jobContext;
@Inject
private ServiceBean serviceBean; // Always NULL
@Override
public void beforeJob() throws Exception {...}
}
我尝试了多种类型的侦听器(块、进程、写入侦听器),但结果始终相同。
如果我在“主要”工件(读取器、处理器、写入器)中进行注入,则注入工作正常。
@Named
@Dependent
public class MyItemWriter extends AbstractItemWriter {
@Inject
private ServiceBean serviceBean; // Works !
}
关于如何让它发挥作用的任何想法?
还是我应该只在主要工件之一中完成我的设置工作?
谢谢