2011-03-01 19 views
6

Tenemos un clúster de servidores Tomcat que comparten un servidor web común que ejecuta mod_jk. Actualmente usamos sesiones adhesivas para encargarnos del manejo de la sesión, pero nos gustaría pasar al uso compartido de sesiones de JDBC. ¿Alguien tiene un buen recurso o una solución paso a paso para lidiar con esto?Sesiones persistentes con JDBC y Tomcat

No estaba seguro de si esta pregunta era para stackoverflow, serverfault o DBA, pero aquí está. :)

EDIT:

creo que el contenido de mi pregunta debe ser confuso. Las sesiones a las que me refiero son sesiones de usuario (JSESSIONID), no conexiones a la base de datos. Lo que quiero hacer es utilizar la base de datos para manejar las sesiones de los usuarios, de modo que cuando un servidor en el clúster se apaga, la transición a otro servidor es perfecta para el usuario. En este momento, el usuario se desconecta cuando ocurre un error en el servidor.

Respuesta

5

La mayor parte de esto está disponible en Tomcat documentation, vea Implementación del administrador persistente.

También puede consultar this.

1

Como dice JDBC, supongo que quiere decir en Java? Su pregunta parece tener cierta ambigüedad, por lo que no estoy seguro de que esto sea lo que está buscando, pero según tengo entendido, lo intentaré. De todos modos, utilizo la agrupación de conexiones (Apache commons dbcp) y Spring, lo que lo hace bastante fácil.

<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"/> 

Luego, en el código que usar un muelle JdbcTemplate, y con esta configuración, las conexiones a la base de datos se agrupan y se reutiliza. La fuente de datos se gestiona como Spring Bean, luego se inyecta la dependencia en el lugar donde se usa. Spring se encargó de compartir las sesiones de jdbc para ti y ¡voilá! Aquí es cómo hacer la inyección de dependencias con anotaciones:

private JdbcTemplate jdbcTemplate; 

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

Incluso si usted no está utilizando la primavera para MVC o cualquier otra cosa, las herramientas de Primavera JDBC son muy agradables.

+2

parece que tiene una idea equivocada de mi pregunta. votando por una respuesta completa para una pregunta diferente, sin embargo;) – Andy

Cuestiones relacionadas