Java Spring-在不同的web应用程序之间共享web应用程序上下文

Java Spring-在不同的web应用程序之间共享web应用程序上下文,java,spring,Java,Spring,我有一个多模块maven项目。其中一个模块是具有一些SpringBean的util层。我想在其他模块中共享相同的SpringBean 其他模块部署为非相关的web应用程序,因此理想情况下,我的util bean将是单例,并且在所有web应用程序中,我只有一个对这些单例的引用 我找到了一些共享SpringWeb应用程序上下文的链接,但它们似乎在同一个.ear中工作,但在我的例子中,我有不同的web应用程序 有没有办法做到这一点?不容易。应用程序服务器为每个应用程序使用一个类加载器,这意味着即使您将

我有一个多模块maven项目。其中一个模块是具有一些SpringBean的util层。我想在其他模块中共享相同的SpringBean

其他模块部署为非相关的web应用程序,因此理想情况下,我的util bean将是单例,并且在所有web应用程序中,我只有一个对这些单例的引用

我找到了一些共享SpringWeb应用程序上下文的链接,但它们似乎在同一个.ear中工作,但在我的例子中,我有不同的web应用程序


有没有办法做到这一点?

不容易。应用程序服务器为每个应用程序使用一个类加载器,这意味着即使您将引用从创建bean的应用程序传递到另一个应用程序,也会得到
ClassCastException
s


您需要的是在应用服务器启动时定义bean。将bean的代码放入appserver的类路径中,并检查如何设置JNDI上下文的文档。JNDI上下文允许您共享全局资源(如DB连接)。

根据应用程序服务器/servlet容器的不同,您可以通过谷歌搜索在webapps之间共享servlet上下文的技术。WebApplicationContext存储在ServletContext中,因此您将得到您的答案。

我猜您指的是类似的技术。据我所知,这在耳朵外是可能的。但是没有官方的标准。实际上,您必须确保springjar文件加载到servlet容器的共享上下文加载器中,而不是单个应用程序的上下文中。我相信XML文件也需要位于父上下文的类路径中。

“应用程序服务器为每个应用程序使用一个类加载器”。。。不一定。JavaEE强制要求这样做,但是一些应用服务器(例如JBoss)允许每个EAR有一个类加载器,这大大简化了事情。我必须尝试一下JNDI技术。是的,我正在谈论这种技术,尽管我没有设法让它工作。。。