2010-06-06 2 views
0

Я использую одноэлементный класс для соединения PostgresSQL внутри подателя. Проблема в том, что как только он открыт, он работает некоторое время (я думаю, до некоторого таймаута), а затем он начинает бросать исключение ввода-вывода. Любая идея, что происходит с классом singleton внутри Tomcat VM? ThanksTomcat Postgres Connection

+0

Вероятно, исключение говорит вам, что не так, так что это говорит? – nos

+0

Такая же проблема была опубликована недавно: http://stackoverflow.com/questions/2979415/how-to-manage-db-connections-on-server – BalusC

ответ

1

В Tomcat нет ни одного окошка; это только то, как работают соединения, когда у вас есть только один, и держать его открытым в течение длительного времени. Он называется «тайм-аут».

Эта конструкция не может масштабироваться. Лучшим решением является поддержание соединений как можно короче. Ваш код должен открыть соединение, использовать его и закрыть в области транзакций.

Вы также должны установить connection pool в Tomcat.

3

Я понятия не имею. Просто делайте правильные вещи и не изобретайте велосипед. Используйте DataSource, либо получите его через JNDI (см. http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html), либо сделайте это самостоятельно (мне нравится использовать Spring, но если ваше веб-приложение очень простое, это, вероятно, перебор).

Использование источника данных.

0

, а затем он начинает бросать исключение ввода/вывода

Ну, что такое исключение именно?

Кроме того, в качестве примечания можно использовать одно соединение Postgres JDBC из нескольких потоков, но it is not recommended to do so.

Смежные вопросы