Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Websphere中传播JavaEE上下文_Java_Jakarta Ee_Websphere 8 - Fatal编程技术网

在Websphere中传播JavaEE上下文

在Websphere中传播JavaEE上下文,java,jakarta-ee,websphere-8,Java,Jakarta Ee,Websphere 8,我正在开发运行在WebSphere8.5上的基于Jersey的JAX-RS2应用程序。我正在使用异步特性生成一个新线程。问题是新线程没有获得jndi查找所需的JavaEE上下文。我得到的错误是: 无法完成java:comp/env名称上的JNDI操作,因为 当前线程未与Java企业版关联 应用程序组件。当JNDI客户端 在服务器的线程上不会使用java:comp/env名称 申请。确保JavaEE应用程序没有运行 java上的JNDI操作:静态代码块内或中的comp/env名称 由该应用程序创建

我正在开发运行在WebSphere8.5上的基于Jersey的JAX-RS2应用程序。我正在使用异步特性生成一个新线程。问题是新线程没有获得jndi查找所需的JavaEE上下文。我得到的错误是:

无法完成java:comp/env名称上的JNDI操作,因为 当前线程未与Java企业版关联 应用程序组件。当JNDI客户端 在服务器的线程上不会使用java:comp/env名称 申请。确保JavaEE应用程序没有运行 java上的JNDI操作:静态代码块内或中的comp/env名称 由该应用程序创建的线程。这样的代码不一定 在服务器应用程序请求的线程上运行,因此 由java:comp/env名称上的JNDI操作支持

JavaEE7中有一个可在websphere中配置的ManagedExecutorService特性。我不能使用它,因为WebSphere8.5只支持JavaEE6。我无法提前进行查找,因为包含的第三方JAR需要JavaEE上下文才能工作


我想将JavaEE上下文传播到新生成的线程。如果可能,请给出建议。

通过在WebSphere Application Server中创建工作管理器,可以将任务提交到具有J2EE上下文的新线程。对于WAS 8及以上版本,完整配置文件中提供的WorkManager现在也是ExecutorService。这方面的步骤是:

  • 在WAS管理控制台上转到资源-->异步bean-->工作管理器,并使用jndi名称wm/myWM创建了一个新的工作管理器
  • 在java代码中,为工作管理器执行jndi查找

    ExecutorService ExecutorService=(ExecutorService)initialContext.lookup(“wm/myWM”)

  • 将任务提交给执行器服务

    submit(新的异步作业(inputData,asyncResponse))

  • 在WebSphereLiberty配置文件上,可以将其配置为managedExecutorService。server.xml中需要添加以下内容

     <feature>concurrent-1.0</feature> 
    
    <managedExecutorService jndiName="wm/myWM">
        <contextService>
            <jeeMetadataContext/>
            <classloaderContext/>
            <securityContext/>
        </contextService>
    </managedExecutorService>
    
    concurrent-1.0
    

    更多详细信息请参见pdf中的以下链接:

    这是不可能的。另外,这个词是spawn(和spawed),而不是span和span(除非你说的是一座桥,我听说在Moosejaw外面有一座)。更新帖子。谢谢斯不知道你的项目时间表是什么,但也许你现在可以考虑一下。它支持JAX-RS 2,因此您不需要外部Jersey和通过CONTRORES1.0功能支持MauleDeCuto服务。对于完整WebSphere 85.5,您可以考虑不要用异步调用生成新的线程使用会话EJB。有关建议,请参见“感谢天然气”。我能够通过在WebSphereAppServer中配置工作管理器来实现这一点。