Java 如何使并发实用程序(JSR236)在普通的非EE Tomcat8中工作?
我的技术堆栈包括Java 如何使并发实用程序(JSR236)在普通的非EE Tomcat8中工作?,java,tomcat,executorservice,java-ee-7,apache-tomee,Java,Tomcat,Executorservice,Java Ee 7,Apache Tomee,我的技术堆栈包括 (普通,非EE) (作为CDI 1.2的参考实现) 为了能够以更明智和更安全的方式使用和管理线程,我希望包含此依赖项 (作为实施的参考) 我尝试以不同的方式将bean注入到不同范围的bean中(基于视图、基于会话、基于应用程序) 似乎什么都不起作用,例外情况也发生了 这可能是由于不正确的bean注册造成的。因为我找不到。我扫描了整个类路径,在某处找不到任何定义ManagedExecutorService或其任何实现的内容 我试图自己在context.xml中注册它,
- (普通,非EE)
- (作为CDI 1.2的参考实现)
- (作为实施的参考)
ManagedExecutorService
或其任何实现的内容
我试图自己在context.xml
中注册它,但没有成功。我(天真地)假设我的非EE Tomcat的配置是相同的
<Resource name="ManagedExecutorService"
type="javax.enterprise.concurrent.ManagedExecutorService" />
显然不是
我的问题是
我无法升级列出的依赖项 相关:
tomcat/lib
目录,然后在server.xml
中初始化它的一个实例。然后,在servlet或过滤器中,您可以使用@Resource
注释来注入它(如果名称是唯一的,则不需要限定名称)。如果您使用的是Weld和Tomcat,那么您确实应该切换到TomEE。您目前正在尝试手工组装一台JavaEE服务器,而TomEE是一个为您做了所有基础工作的社区。@JonathanS.Fisher谢谢,我非常感谢您在您的答案下回复我的评论。实际上,我让CDI在普通Tomcat中工作,并且我成功地将所有@ManagedBean
移动到了CDIBean(例如@Named
+@SessionScoped
)@stdunbar我想做尽可能少的更改(配置方面和依赖方面),并让一些EE特性在普通Tomcat中工作(CDI[完成]CDI上下文中的并发管理[这就是问题所在])。这不是架构问题。
@Resource
private javax.enterprise.concurrent.ManagedExecutorService service;
@Resource(lookup="java:comp/DefaultManagedExecutorService")
private javax.enterprise.concurrent.ManagedExecutorService service;
java.lang.RuntimeException:
Error looking up java:comp/env/.../ManagedExecutorService in JNDI
javax.naming.NameNotFoundException:
Name [.../ManagedExecutorService] is not bound in this Context.
<Resource name="ManagedExecutorService"
type="javax.enterprise.concurrent.ManagedExecutorService" />
<Resource id="ManagedExecutorService"
type="javax.enterprise.concurrent.ManagedExecutorService" />