0

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

在 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是否也应该在集群环境中?我的 App2 是一个 Web 应用程序,它暴露的 Web 服务很少,并且不包含任何 UI。App1 和 App2 之间不得有任何直接通信。App1 必须在其启动时在应用程序范围内设置一些值,稍后 App2 应在需要时访问应用程序范围内的值。谢谢

我在集群环境中有什么问题吗?我的方法正确吗?

谢谢!

4

1 回答 1

0

如果:

  1. 两个应用程序都在集群环境中
  2. 会话属性中的所有内容都是可序列化的
  3. 您的会话正在持久化集群共享的一些数据存储

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

于 2013-11-14T13:07:07.090 回答