我在下面使用访问 App1 在 App2 中设置的 session 数据。
在 App1 中:
ServletContext sctx = ((HttpServletRequest) request).getSession().getServletContext();
String testStr = (String) sctx.getAttribute("attr");
if(testStr == null){
testStr = "test";
sctx.setAttribute("attr", testStr);
}
在 App2 中
我得到如下 session 值。
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 是否也应该在集群环境中?
我的 App2 是一个 Web 应用程序,它几乎没有公开 Web 服务,并且不包含任何 UI。 App1 和 App2 之间不能有任何直接通信。 App1 必须在其启动时在应用程序范围内放置一些值,稍后 App2 应在需要时访问应用程序范围内的值。谢谢
我在集群环境中有什么问题吗?我的方法正确吗?
谢谢!
最佳答案
如果:
- 两个应用程序都在集群环境中
- session 属性中的所有内容都是可序列化的
- 您的 session 正在持久化集群共享的一些数据存储
然后您的 session 属性应该在所有服务器上可用。
关于java - 在 Web 应用程序之间共享应用程序范围数据数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977935/