Java EE - 依赖注入到batchlet中

时间:2016-12-16 18:14:36

标签: batch-processing java-ee-6

我在批处理中遇到依赖注入问题。

@Named
public class SimpleBatchlet extends AbstractBatchlet {
  @Inject
  protected StorageService storageService;

  ...

  public String process() throws Exception {
    storageService.doSomething(); // this throws a null pointer exception
  }
}

@Named
public class LocalFileStorageService implements StorageService {
   public void doSomething() {

   }
}

我已经尝试将beans.xml放在META-INF和WEB-INF中并将其删除,但都无济于事。我也尝试将bean的范围更改为单例等。我通过在使用BatchRuntime启动作业的方法上使用@Schedule注释来调用/启动批处理作业。

我必须遗漏一些简单的东西,因为我知道这应该有用。我将使用的bean的实际范围可能需要改变,但我想说的是我不相信bean范围是一个问题,但是其他一些配置问题。

我还应该注意,我只有1个StorageService实现。

1 个答案:

答案 0 :(得分:0)

不清楚你的问题究竟是什么(注入CDI bean上的NPE?),但是注释你的Batchlet @Dependent应该可以解决问题:

@Named
@Dependent
public class SimpleBatchlet extends AbstractBatchlet {
  @Inject
  protected StorageService storageService;
}

Batchlet需要@Named@Dependent才能与CDI集成。