7

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

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

编辑:

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

4

2 回答 2

5

Tomcat 文档中提供了大部分内容,请参阅Persistent Manager Implementation

你也可以看看这个

于 2011-03-03T09:56:27.903 回答
0

既然你说 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 工具也非常好。

于 2011-03-01T17:46:28.040 回答