我已使用此讨论中描述的解决方案将 BackgroundJobManager 实现为我的 JSF bean 类中的内部类。我还创建了一个 ABCTask(也是一个内部类)作为一个线程,它将在 BackgroundJobManager 的预定时间运行。我需要将消息推送到 JSF 页面,但是从任务类 ABCTask 执行此操作会导致 NPE。同样的事情适用于外部 bean,所以我相信这与这个内部类和 bean 的上下文有关。如果有人知道解决方案,将不胜感激。
我的内部类代码如下:
public class ABCTask implements Runnable {
public ABCTask() {
}
@Override
public void run() {
setTimeoutOccuredFlag(true);
try {
if (getActiveControlledAgent().isEventLogRunning()) {
getActiveControlledAgent().setEventLogRunning(false);
}
printTimeoutMessage();
logger_o.fine("Now leaving the ABCTask ...");
} catch (Exception e) {
logger_o.error("An error while idling "+e.getMessage());
}
}
}
$printTimeoutMessage() 如下:
void printTimeoutMessage() {
FacesUtils.addErrorMessage(MESSAGES.getString("common.timeoutOccured"));
}