2011-03-01 3 views
6

Nous avons un cluster de serveurs Tomcat qui partagent un serveur Web commun exécutant mod_jk. Nous utilisons actuellement des sessions persistantes pour gérer les sessions, mais nous aimerions passer au partage de session JDBC. Quelqu'un at-il une bonne ressource ou une solution étape par étape pour faire face à cela?Sessions persistantes avec JDBC et Tomcat

Je n'étais pas sûr si cette question était destinée à stackoverflow, serverfault, ou DBA, mais c'est ici. :)

EDIT:

Je pense que le contenu de ma question doit être source de confusion. Les sessions auxquelles je fais référence sont des sessions utilisateur (JSESSIONID), pas des connexions à la base de données. Ce que je veux faire est d'utiliser la base de données pour gérer les sessions utilisateur de sorte que lorsqu'un serveur du cluster tombe en panne, la transition vers un autre serveur est transparente pour l'utilisateur. À l'heure actuelle, l'utilisateur est déconnecté lorsqu'une erreur se produit sur le serveur.

Répondre

5

La plupart de ces éléments sont disponibles dans Tomcat documentation, voir Mise en œuvre du gestionnaire permanent. Vous pouvez également consulter this.

1

Puisque vous dites JDBC, je suppose que vous voulez dire en Java? Votre question semble avoir une certaine ambiguïté, alors je ne suis pas sûr que ce soit ce que vous cherchez, mais d'après ce que j'ai compris, je vais essayer. Quoi qu'il en soit, j'utilise le pooling de connexion (Apache commons dbcp) et Spring, ce qui le rend très facile.

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

Ensuite, dans le code, j'utiliser Spring JdbcTemplate, et avec cette configuration, sont mis en commun et les réutiliser des connexions à la base de données. La source de données est gérée comme un bean Spring, puis injectée par dépendance dans l'endroit où elle est utilisée. Spring a géré le partage des sessions jdbc pour vous, et voilà! Voici comment je fais l'injection de dépendance avec annotations:

private JdbcTemplate jdbcTemplate; 

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

Même si vous ne l'utilisez pour Spring MVC ou quoi que ce soit d'autre, les outils Spring JDBC sont vraiment sympa.

+2

semble que vous avez eu la mauvaise idée de ma question. upvote pour une réponse complète à une question différente, cependant;) – Andy

Questions connexes