【问题标题】:CDI injection - NPE of FacesContext when using Deltaspike @scheduledCDI 注入 - 使用 Deltaspike @scheduled 时 FacesContext 的 NPE
【发布时间】:2015-05-26 15:30:39
【问题描述】:

我正在使用 Deltaspike (1.4.0) 和 Quartz (2.2.1) 来安排作业。 在TestJob bean 中注入了ResourceBundle。 ResourceBundle 的生产者需要一个 facesContext,但这始终为 null。

如何在调度程序 bean 中正确注入 ResourceBundle 以及为什么使用 @Scheduled 时 facesContext 始终为空?

@Scheduled(cronExpression = "0 0/1 * * * ?")
public class TestJob implements Job {

    @Inject private EntityManager em;
    @Inject private transient ResourceBundle i18n;

    public TestJob() {}

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("TestJob executed...");
    }
}

ResourceBundle 生产者

public class ResourceBundleProducer implements Serializable {
    @Inject public FacesContext facesContext;

    @Produces
    public ResourceBundle getResourceBundle() {
       if (facesContext.getViewRoot() != null) 
          return ResourceBundle.getBundle("i18n.i18n", facesContext.getViewRoot().getLocale());
       else
          return ResourceBundle.getBundle("i18n.i18n", facesContext.getApplication().getViewHandler().calculateLocale(facesContext));
    }
}

FacesContext 生产者

public class FacesContextProducer implements Serializable {
    @Produces
    @RequestScoped
    public FacesContext produceFacesContext() {
        return FacesContext.getCurrentInstance();
    }
}

【问题讨论】:

  • Jezz...我有同样的问题,我想做一大堆测试....

标签: nullpointerexception quartz-scheduler jsf-2.2 facescontext deltaspike


【解决方案1】:

您需要模拟一些额外配置支持的 JSF 容器。

参见例如http://deltaspike.apache.org/documentation/test-control.html#JSF(viaMyFaces-Test)

另见OS890提供的例子:https://github.com/os890/ee6-ds-demo/blob/master/src/test/java/org/os890/demo/ee6/test/PageBeanTest.java

或者您在测试类路径中提供 ResourceBundleProducer 的专用 bean(请参阅 @Specializes)并使用不基于 FacesContext 的逻辑。

如果您在他们的邮件列表中提出此类问题,您很快就会得到答案。

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2018-01-08
    • 2017-09-24
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2015-02-14
    • 2011-05-29
    相关资源
    最近更新 更多