"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。
我正在将旧应用程序(不使用 beans 或依赖项注入)从 Weblogic 迁移到 WildFly。在大多数情况下,它现在工作正常。但是,它还在 "traditional way" (new Thread()
) 中创建线程,并且这些线程无法查找 JNDI 名称,这意味着它们无法使用数据库和邮件。
看来我需要使用托管线程工厂来创建线程。这样,新线程应该仍然能够看到容器中定义的 JNDI 名称。但是,我不确定如何从容器中检索这样的工厂。我能找到的所有示例都使用了依赖注入,而应用程序的编写根本没有依赖注入。
那么,如何从自己创建的线程访问 JNDI 名称?或者,我如何检索可用于创建仍能看到容器及其 JNDI 绑定的线程的托管线程工厂?
标准托管线程工厂在 JNDI 中可用,名称为 java:comp/DefaultManagedThreadFactory
。
有关详细信息,请参阅 Java EE 7 spec 第 146 页的 §EE.5.21。