Java 在web应用程序之间共享应用程序范围数据?

Java 在web应用程序之间共享应用程序范围数据?,java,spring,tomcat,servlets,java-ee-6,Java,Spring,Tomcat,Servlets,Java Ee 6,我使用下面的命令访问App1在App2中设置的会话数据 在附录1中: 在附录2中 我得到的会话值如下所示 ServletContext sctx = ((HttpServletRequest) request).getSession().getServletContext().getContext("/app1"); String testStr = (String) sctx.getAttribute("attr"); System.out.println("the value

我使用下面的命令访问App1App2中设置的会话数据

在附录1中: 在附录2中 我得到的会话值如下所示

ServletContext sctx = ((HttpServletRequest) request).getSession().getServletContext().getContext("/app1");
    String testStr = (String) sctx.getAttribute("attr");
    System.out.println("the value which set in first app: " + testStr);
实际上,我的
App2将在集群环境中
。在这种情况下,App1是否也应该在集群环境中? My App2是一个web应用程序,它很少公开web服务,并且不包含任何UI。App1和App2之间不得有任何直接通信。App1在启动时必须在应用程序范围中放入一些值,以后的App2应该在需要时访问应用程序范围的值。塔克斯

集群环境中是否存在任何问题?我的方法正确吗

谢谢

如果:

  • 这两个应用程序都位于集群环境中
  • 会话属性中的所有内容都是可序列化的
  • 您的会话正在持久化集群共享的某些数据存储

  • 那么您的会话属性应该可以在所有服务器上使用。

    @Markus,该链接不适合我的需要。谢谢!这个标题有误导性。
    ServletContext
    不是会话;此数据是应用程序范围的。是。你说得对。在这种情况下,App1和App2都应该在同一个应用服务器中,对吗?如果您想共享servlet上下文属性,那么,是的,这两个应用必须在集群中的每个节点上运行。如果您想在集群中复制这些数据,我没有任何建议,因为我从未以这种方式使用过Tomcat。Thanx非常感谢您的回复…如果有任何节点更改应用程序范围变量值,那么它会反映在所有节点中吗?谢谢你的回复。如果我不将App1保留在集群环境中,那么它将无法正常工作?App1和App2也应该在同一个应用服务器上,对吗?ThanxIt依赖于servlet容器。我知道JBoss将允许在web部署之间共享会话,但为了避免实现依赖性,我建议使用一个应用程序。或者,您可以将此信息存储在cookie.Thanx中,以供回复。我不能使用cookie机制,因为我不处理浏览器,而且它不包含UI。但它是一个web应用程序。这里,App2很少公开web服务。塔克斯
    ServletContext sctx = ((HttpServletRequest) request).getSession().getServletContext().getContext("/app1");
        String testStr = (String) sctx.getAttribute("attr");
        System.out.println("the value which set in first app: " + testStr);