Как прочитать имя пула из соединения? - PullRequest
0 голосов
/ 27 января 2012

Я использую Соединение через несколько пулов:

 DataSource ds = initialContext.lookup("poolname1");
 Connection cn = ds.getConnection();
 submethod1(cn);
 submethod2(cn);

 void submethod1(Connection cn)
 {
      // using connection
      // ..
 }

Мой вопрос: как записать "имя пула" в подметодах?или похожие сведения о DataSource.

Ответы [ 3 ]

1 голос
/ 27 января 2012

Имя пула в вашем примере на самом деле JNDI Name . Обычно это конфигурация, которая настраивается в определении ресурса (например, в конфигурации tomcat).

Для вашей проблемы, как упоминал @sourlcheck, это невозможно, так как соединение не знает об их источнике данных.

Один из способов решить вашу проблему - присвоить метку источнику данных. Большинство реализаций источника данных Pooled (например, C3P0 ) предлагают метод установки для установки имени для источника данных. В C3P0 класс источника данных равен ComboPooledDataSource, а метод - getDataSourceName(). Как только вы получите это имя, оно останется неизменным на протяжении всего жизненного цикла. Но, конечно же, вам нужно представить стороннюю библиотеку

1 голос
/ 27 января 2012

Возможно, это поможет

getClientInfo()

или

getMetaData() 

, как указано в Официальном документе Java

0 голосов
/ 27 января 2012

Вы не можете войти "имя пула" в методы, которые получают соединение.Соединения не знают, объединяются ли они в пул или обслуживаются напрямую из источника данных без пула.

Также вы можете создавать пул и получать к нему доступ различными способами, не все из которых гарантируют существование «имени пула».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...