JSR352-Java批处理-无法在侦听器工件中注入服务bean或DAO



在批处理项目中,我需要在处理之前从数据库中加载一些引用数据。我试图通过在JobListener中注入服务bean并在";beforeJob";方法,但serviceBean始终为null。

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

我尝试了多种类型的侦听器(chunk、process、write侦听器(,但结果总是一样的。

注射效果很好,但如果我在";主";工件(读者、监考者、作者(。

@Named
@Dependent
public class MyItemWriter extends AbstractItemWriter {
@Inject 
private ServiceBean serviceBean; // Works !
}

有什么想法可以让它发挥作用吗?

或者我应该只在其中一个主要工件中进行设置工作?

感谢

如果您使用WildFly(其中包括JBeret作为其批处理容器(,它应该可以工作。向任何批处理工件(包括批处理监听器(注入bean也应该以同样的方式工作。如果问题仍然存在,请提交WildFly JIRA问题

最新更新