1

私はスタートアップBeanを持っています。これでバッチレットジョブを開始したいと思います。@Nemedと を使用してバッチレット クラスに注釈を付けました@Dependent。ReportService のような ejb をバッチレットで使用したいのですが、インジェクションが機能しません。バッチレットに EJB を挿入するにはどうすればよいですか? 以下の例をワイルドフライ 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>

スタートアップ Bean:

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

1 に答える 1