2

我有一个每 10 分钟运行一次的后台服务。

该服务在数据库中查询要执行的作业,将根据作业加载具有不同业务逻辑的类(使用 Class.forName())。当然,它们实现了相同的接口。

我将这些类声明为 SEAM 组件,但是当我尝试使用 entityManager 或 Logger 时,我得到了 NPE。

回答我自己的问题,我想这是因为 Class.forName() 属于 SEAM 的注入机制,它没有机会注入依赖项。

在我加载类之后,我可能可以通过自己注入这些来解决这个问题。有没有更好的方法来做到这一点?

谢谢!

4

2 回答 2

2

您是否检查过如何使用EJB-Timer Service

另一个资源:

是否可以在 JBoss 定时服务中使用 Seam?

我必须在几天内做类似的事情。

请留下对你有用的评论;-)

于 2010-08-23T13:34:49.027 回答
1

您可以通过使用将所有 Seam 组件注入非接缝类中

Component.getInstance("entityManager") //You can inject whatever you want.

要使 Logger 正常工作,您可以执行以下操作

 private static final LogProvider log = Logging.getLogProvider(MyClass.class);
于 2010-08-24T11:35:51.307 回答