"Traditional" 线程无法在 WildFly 中查找 JNDI 名称

"Traditional" threads cannot lookup JNDI names in WildFly

我正在将旧应用程序(不使用 beans 或依赖项注入)从 Weblogic 迁移到 WildFly。在大多数情况下,它现在工作正常。但是,它还在 "traditional way" (new Thread()) 中创建线程,并且这些线程无法查找 JNDI 名称,这意味着它们无法使用数据库和邮件。

看来我需要使用托管线程工厂来创建线程。这样,新线程应该仍然能够看到容器中定义的 JNDI 名称。但是,我不确定如何从容器中检索这样的工厂。我能找到的所有示例都使用了依赖注入,而应用程序的编写根本没有依赖注入。

那么,如何从自己创建的线程访问 JNDI 名称?或者,我如何检索可用于创建仍能看到容器及其 ​​JNDI 绑定的线程的托管线程工厂?

标准托管线程工厂在 JNDI 中可用,名称为 java:comp/DefaultManagedThreadFactory

有关详细信息,请参阅 Java EE 7 spec 第 146 页的 §EE.5.21。