我有一个包含ejb和war的JavaEE耳朵部署到GlassFish v3.1.2.2。战争包含使用CDI的Jersey / Atmosphere应用程序。在战争中,我有一个MDB异步接收将使用Atmosphere广播的事件。我需要使用Atmosphere广播的消息需要包含一些指向Web应用程序中其他资源的链接。
为了构建这些链接,就像代码中的其他地方一样,我想使用UriBuilder
。为此,我需要访问应用程序的已部署上下文根,因此我可以调用UriBuilder.fromPath(contextRoot)
这个Java EE 7 article意味着我可以通过这种方式将ContextServlet注入CDI bean:
@Inject ServletContext context;
但这对我的MDB不起作用。我也只在JavaEE6上使用Glassfish v3。
如何从战争中托管的MDB访问ServletContext
?
答案 0 :(得分:0)
我最终解决了以下问题。
ServletContext
开箱即用的提供程序。ServletContext
的纯CDI bean中观察到CDI事件为了构建Atmosphere消息所需的URL。