SEAM:如何在动态加载的类中获取EntityManager和Logger?
我有一个每 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否检查过如何使用 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 ;-)
您可以使用以下方法将所有 Seam 组件注入非 Seam 类中
要使 Logger 正常工作,您可以执行以下操作
You can inject all Seam components in non seam classes by using
To get the Logger working you can do the following