我在下面使用访问App2中App1设置的会话数据。

在App1中:

ServletContext sctx = ((HttpServletRequest) request).getSession().getServletContext();
    String testStr = (String) sctx.getAttribute("attr");
    if(testStr == null){
        testStr = "test";
        sctx.setAttribute("attr", testStr);
    }


在App2中

我得到如下会话值。

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 will be in cluster environment。在这种情况下,App1也应该在群集环境中吗?
My App2是一个Web应用程序,几乎没有公开Web服务,并且不包含任何UI。 App1和App2之间不得有任何直接通信。 App1必须在启动时在Application作用域中放置一些值,以后App2应该在需要时访问应用程序作用域的值。谢谢

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

谢谢!

最佳答案

如果:


这两个应用程序都在集群环境中
会话属性中的所有内容均可序列化
您的会话将保留群集共享的一些数据存储


然后,您的会话属性应该在所有服务器上都可用。

10-08 15:36