我们有一组Tomcat服务器,它们共享一个运行mod_jk的公共Web服务器。我们目前使用粘性会话来处理会话处理,但我们希望转向JDBC会话共享。有没有人有足够的资源或逐步的解决方案来解决这个问题?
我不确定这个问题是否适用于stackoverflow,serverfault或DBA,但现在是。 :)
修改
我认为我的问题内容必须令人困惑。我所指的会话是用户会话(JSESSIONID),而不是与数据库的连接。我想要做的是使用数据库来处理用户会话,这样当集群中的一台服务器出现故障时,向用户无缝转换到另一台服务器。现在,当服务器上发生错误时,用户将被注销。
答案 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工具也非常好。