我有一个启动 bean。我想在这开始一些批处理工作。我使用@Nemed
和注释了 batchlet 类@Dependent
。我想在批处理中使用像 ReportService 这样的 ejb,但注入不起作用。如何将 EJB 注入到我的 batchlet?我在 wildfly 11.0.0.Alpha1 上部署了以下示例,并在服务对象中获得了空引用。
批处理测试:
@Dependent
@Named("BatchletTest")
public class BatchletTest extends AbstractBatchlet{
public BatchletTest() {
}
@Inject
ReportService service;
@Override
public String process() throws Exception {
System.out.println(service);
return null;
}
}
测试作业.xml
<job id="test-job" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
<step id="testStep">
<batchlet ref="com.test.BatchletTest" />
</step>
</job>
启动豆:
@Singleton
@Startup
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class StartupBean {
private Logger logger = LoggerFactory.getLogger(StartupBean.class);
@PostConstruct
private void startup() throws Exception {
long executionId = BatchRuntime.getJobOperator().start("test-job", new Properties());
System.out.println("myJob started, execution ID = " + executionId);
}
}
报告服务:
@Stateless
public class ReportService {
.....
}