我正在将一个旧的应用程序(不使用bean或依赖项注入)从Weblogic迁移到WildFly。在大多数情况下,它现在运行良好。然而,它也以"传统方式"(new Thread()
)创建线程,并且这些线程不能查找JNDI名称,这意味着数据库和邮件对它们不可用。
我似乎需要使用托管线程工厂来创建线程。这样,新线程应该仍然能够看到容器中定义的JNDI名称。然而,我不知道如何从容器中检索这样一个工厂。我能找到的所有例子都使用依赖注入,而应用程序的编写完全没有依赖注入。
那么,如何从自己创建的线程访问JNDI名称呢?或者,如何检索托管线程工厂,以便创建仍能看到容器及其JNDI绑定的线程?
java:comp/DefaultManagedThreadFactory
。
有关更多信息,请参阅Java EE 7规范第146页的§EE.5.21。