SEAM:如何在动态加载的类中获取EntityManager和Logger?

发布于 2024-09-15 17:35:36 字数 296 浏览 4 评论 0原文

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

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

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

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

在加载课程后,我可能可以通过自己注入这些来解决这个问题。有更好的方法吗?

谢谢!

I have a background service that runs every 10 min.

This service queries the DB for jobs to execute a will load a class with a different business logic according to the job (using Class.forName()). They implement the same Interface, of course.

I declared those classes to be SEAM components but when I try to use the entityManager or Logger I get a NPE.

Answering my own question, I suppose this is because Class.forName() goes under SEAM's injection mechanism and it won't have a chance to inject the dependencies.

I could probably work around that by injecting those myself, after I load the class. Is there a better way to do that?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

左耳近心 2024-09-22 17:35:36

您是否检查过如何使用 EJB-定时服务

另一个资源:

Is it possible to use Seam in JBoss 定时服务?

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

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

Did you check how to use EJB-Timer Service?

Another resource:

Is it possible to use Seam in a JBoss timed service?

I have to do something similar in a few days.

Please leave a comment what worked for you ;-)

海拔太高太耀眼 2024-09-22 17:35:36

您可以使用以下方法将所有 Seam 组件注入非 Seam 类中

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

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

 private static final LogProvider log = Logging.getLogProvider(MyClass.class);

You can inject all Seam components in non seam classes by using

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

To get the Logger working you can do the following

 private static final LogProvider log = Logging.getLogProvider(MyClass.class);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文