【问题标题】:Persistent Sessions with JDBC and Tomcat使用 JDBC 和 Tomcat 的持久会话
【发布时间】:2011-07-06 16:36:48
【问题描述】:

我们有一个 Tomcat 服务器集群,它们共享一个运行 mod_jk 的公共 Web 服务器。我们目前使用粘性会话来处理会话,但我们希望转向 JDBC 会话共享。有没有人有很好的资源或分步解决方案来处理这个问题?

我不确定这个问题是针对 stackoverflow、serverfault 还是 DBA,但在这里。 :)

编辑:

我认为我的问题的内容一定令人困惑。我所指的会话是用户会话 (JSESSIONID),而不是与数据库的连接。我想要做的是使用数据库来处理用户会话,以便当集群中的一台服务器出现故障时,用户可以无缝过渡到另一台服务器。现在,当服务器发生错误时,用户将被注销。

【问题讨论】:

    标签: java session tomcat jdbc persistence-manager


    【解决方案1】:

    大部分内容在Tomcat documentation 中可用,请参阅Persistent Manager Implementation

    你也可以看看this

    【讨论】:

      【解决方案2】:

      既然你说 JDBC,我假设你的意思是 Java?您的问题似乎有些模棱两可,所以我不确定这是否是您要寻找的,但根据我的理解,我会试一试。无论如何,我使用连接池(Apache commons dbcp)和 Spring,这很容易。

      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost/databasename"/>
          <property name="username" value="root"/>
          <property name="password" value="password"/>
      

      然后在代码中我使用 Spring jdbctemplate,并且通过此设置,与数据库的连接被池化并重用。数据源作为 Spring bean 进行管理,然后将依赖注入到使用它的位置。 Spring 为您处理了 jdbc 会话的共享,瞧!以下是我如何使用注释进行依赖注入:

      private JdbcTemplate jdbcTemplate;
      
      @Autowired
      public void setDataSource(DataSource dataSource) {
          this.jdbcTemplate = new JdbcTemplate(dataSource);
      }
      

      即使您不使用 Spring for MVC 或其他任何东西,Spring JDBC 工具也非常好。

      【讨论】:

      • 似乎您从我的问题中得到了错误的想法。不过,请为另一个问题的彻底答案投票;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2014-02-22
      • 2013-03-06
      相关资源
      最近更新 更多