Постоянные сеансы с JDBC и Tomcat - PullRequest
8 голосов
/ 01 марта 2011

У нас есть кластер серверов Tomcat, которые совместно используют общий веб-сервер, на котором работает mod_jk.В настоящее время мы используем липкие сеансы, чтобы позаботиться об обработке сеансов, но мы хотели бы перейти к разделению сеансов JDBC.У кого-нибудь есть хороший ресурс или пошаговое решение для решения этой проблемы?

Я не был уверен, предназначен ли этот вопрос для stackoverflow, serverfault или DBA, но вот он.:)

РЕДАКТИРОВАТЬ:

Я думаю, что содержание моего вопроса должно быть запутанным.Сеансы, на которые я ссылаюсь, являются сеансами пользователя (JSESSIONID), а не соединениями с базой данных.Что я хочу сделать, так это использовать базу данных для обработки пользовательских сеансов, чтобы при выходе из строя одного сервера в кластере переход на другой сервер был беспрепятственным для пользователя.Прямо сейчас пользователь выходит из системы при возникновении ошибки на сервере.

Ответы [ 2 ]

5 голосов
/ 03 марта 2011

Большая часть этого доступна в Документация Tomcat , см. Реализация Persistent Manager .

Вы также можете посмотреть this .

1 голос
/ 01 марта 2011

Поскольку вы говорите 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 действительно хороши.

...