Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как проверить объект подключения, возвращенный из пула подключений?

Автор вопроса: Vinay thallamОтветов: 1

Я выполняю поиск jndi для источника данных, настроенного в JBOSS AS.Code, для которого показано ниже.

initialContext = новый InitialContext (реквизиты);

dataSource = (DataSource) initialContext.lookup (bundle.getString (jndiName));

соединение = dataSource.getConnection ();

Этот фрагмент кода помещается в doPost сервлета. Также я спокойно звоню

connection.close ()

после использования объекта подключения.

В моей конфигурации источника данных есть следующие записи

<min-pool-size>1</min-pool-size>
<max-pool-size>1</max-pool-size>

В соответствии с моим пониманием пула соединений, каждый раз, когда я делаю запрос к сервлету, тот же объект соединения возвращается вызовом datasource .getConnection() (поскольку я указал минимальный и максимальный размер пула равным 1, а вызов закрытия не закрывает соединение с БД вообще) .

Как теперь проверить, что возвращается тот же объект подключения?

  • Почему вы хотите проверить объект подключения? Один из способов кэшировать объект локально, а затем проверять кешированные значения. Arun P Johny 08.01.2013
  • Просто чтобы быть уверенным, что соединение с БД не создается каждый раз. Я не нашел способа проверить, включен ли пул или отключен Vinay thallam 08.01.2013
  • Один из способов - проверить сервер базы данных, чтобы узнать, сколько подключений создано. Arun P Johny 08.01.2013
  • Поскольку пул соединений поддерживает физические соединения и выдает (обычно новое) логическое соединение (либо прокси, либо пользовательскую реализацию соединения) для каждого запроса, невозможно проверить, что это то же самое соединение, не прибегая к отражению или источнику данных или специфические приемы базы данных для проверки подлинности физического соединения Mark Rotteveel 08.01.2013
  • Спасибо .. Я проверил свой sql-сервер, запросив количество открытых подключений. Остается 1 (для моей настройки конфигурации) даже после вызова connection.close () и даже после второго вызова datasource.getConnection (). Моя проблема решена. Vinay thallam 08.01.2013

javajdbcconnection-poolingjboss

Ответы

Ответ 1 · partlov

На самом деле вы не можете быть уверены, что это то же самое соединение. Возможно, возникли проблемы с подключением к базе данных, поэтому пришлось создать другое подключение. Почему вы хотите проверить соединение? Может быть, вы могли бы сохранить хеш-значение и сравнить их?

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы