【发布时间】:2015-05-22 02:40:50
【问题描述】:
我正在开发在 Websphere 8.5 上运行的基于 Jersey 的 JAX-RS2 应用程序。我正在使用异步功能来生成一个新线程。问题是新线程没有获得 jndi 查找所需的 Java EE 上下文。我得到的错误是:
无法完成对 java:comp/env 名称的 JNDI 操作,因为 当前线程未与 Java Enterprise Edition 关联 应用程序组件。当 JNDI 客户端 在服务器的线程上不会使用 java:comp/env 名称 申请请求。确保 Java EE 应用程序没有运行 静态代码块内或在 java:comp/env 名称上的 JNDI 操作 该应用程序创建的线程。这样的代码不一定 在服务器应用程序请求的线程上运行,因此不是 受 java:comp/env 名称上的 JNDI 操作支持。
Java EE 7 中的 ManagedExecutorService 功能可以在 websphere 中进行配置。我无法使用它,因为 Websphere 8.5 仅支持 Java EE 6。我无法提前进行查找,因为其中包含需要 Java EE 上下文才能工作的第三方 jar。
我想将 Java EE 上下文传播到新生成的线程。如果可能,请提出建议。
【问题讨论】:
-
不可能。此外,这个词是 spawn(和 spawned),而不是 span 和 spanned(除非你说的是一座桥,我听说在 Moosejaw 外面有一座)。
-
更新帖子。谢谢
-
我不知道你的项目时间表是什么,但也许你现在可以考虑WebSphere Liberty Beta。它支持 JAX-RS 2.0,因此您不需要外部 Jersey 并通过 concurrent-1.0 功能支持 ManagedExecutorService。
-
对于完整的 WebSphere 8.5.5,您可以考虑使用带有异步调用的会话 EJB,而不是生成新线程。见Configuring EJB 3.1 session bean methods to be asynchronous
-
感谢 Gas 的建议。我可以通过在 Websphere App Server 中配置一个工作管理器来实现这一点。
标签: java jakarta-ee websphere-8