代码之家  ›  专栏  ›  技术社区  ›  Miguel Ping

spring-在不同webapps之间共享web应用程序上下文

  •  4
  • Miguel Ping  · 技术社区  · 16 年前

    我有一个多模块的maven项目。其中一个模块是一个util层,它有一些springbean。我想分享 相同的 其他模块中的spring bean。

    其他模块部署为 无关的 web应用程序,所以理想情况下,我的utilbean是单例的,在所有的web应用程序中,我只有一个对这些单例的引用。

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

    有办法做到这一点吗?

    3 回复  |  直到 16 年前
        1
  •  4
  •   Aaron Digulla    16 年前

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

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

        2
  •  2
  •   Dan    16 年前

    我想你指的是 this . 据我所知,这在耳朵之外是可能的。但没有官方标准。实际上,您必须确保spring jar文件被加载到servlet容器的共享上下文加载器中,并且 不 在单个应用程序的上下文中。我相信XML文件也需要在父上下文的类路径中。

        3
  •  0
  •   Bozho    16 年前

    根据application server/servlet容器的不同,您可以在google上搜索在webapps之间共享servletcontext的技术。webapplicationcontext存储在servletcontext中,因此您将得到您的答案。