使用JDBC和Tomcat进行持久会话

时间:2011-03-01 17:23:44

标签: java session tomcat jdbc persistence-manager

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

我不确定这个问题是否适用于stackoverflow,serverfault或DBA,但现在是。 :)

修改

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

2 个答案:

答案 0 :(得分:5)

Tomcat documentation中提供了大部分内容,请参阅永久管理器实施

您还可以查看this

答案 1 :(得分:1)

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