java - 在 Web 应用程序之间共享应用程序范围数据数据?

标签 java spring tomcat servlets java-ee-6

我在下面使用访问 App1App2 中设置的 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 应在需要时访问应用程序范围内的值。谢谢

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

谢谢!

最佳答案

如果:

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

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

关于java - 在 Web 应用程序之间共享应用程序范围数据数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977935/

相关文章:

java.lang.NoClassDefFoundError : javax/servlet/http/HttpSessionBindingListener 错误

java - "Software caused connection abort: socket write error"的官方原因

java - 如何在 Java 中创建具有多个模式的 XML 文档?

java - 'synchronized'与ReentrantLock有何关系?

java - java中的原始数据类型是如何定义/编写的?

java - 如何从存储过程中仅获取选定的表?

spring - 使用 Spring MVC 和 Hibernate 实现分页

java - openshift上的tomcat CATALINA_HOME环境变量问题

java - 如何使用 libsvm 计算多类预测的概率?

java - 如何使用 boja 类将一个列表添加到另一个列表