HIkariCP создает пул соединений для каждого веб-приложения - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь создать глобальный пул соединений для Tomcat с HikariCP, но каким-то образом Hikari создает новый пул для каждого веб-приложения и даже при повторном развертывании приложений.Кроме того, это приводит ко многим не закрытым пулам соединений.

Вот мои конфигурации на Tomcat:

tomcat / conf / server.xml

<GlobalNamingResources>
    <Resource name="jdbc/Pool" global="jdbc/Pool" auth="Container"
        factory="com.zaxxer.hikari.HikariJNDIFactory"
        type="javax.sql.DataSource"
        singleton="true"
        minimumIdle="5"
        maximumPoolSize="30"
        connectionTimeout="300000"
        dataSourceClassName="oracle.jdbc.pool.OracleDataSource"
        dataSource.implicitCachingEnabled="true"
        dataSource.user="user"
        dataSource.password="pw"
        dataSource.url="url" />
</GlobalNamingResources>

tomcat / conf / context.xml

<ResourceLink name="jdbc/Pool"
        global="jdbc/Pool"
        auth="Container"
        type="javax.sql.DataSource" />

В моем Java-коде я получаю источник данных, подобный следующему:

HikariConfig config = new HikariConfig();
Context initContext = new InitialContext();
DataSource dataSource = (DataSource) 
initContext.lookup("java:comp/env/jdbc/Pool");
config.setDataSource(dataSource);
config.setRegisterMbeans(true);
HikariDataSource ds = new HikariDataSource(config);

На самом деле я не получаю никаких ошибок или материала, но внутри jconsole я вижу, что Хикари создает пул соединений для каждого веб-приложения.

Кто-нибудь знает, что здесь может быть не так?

Заранее спасибо!

1 Ответ

0 голосов
/ 07 декабря 2018

Вам нужно определить singleton = true в заводском определении

Если вы хотите разделить пул по WAR, из моего чтения документов Tomcat, что вам нужно,атрибут singleton = "true".

  factory="com.zaxxer.hikari.HikariJNDIFactory"
        singleton="true"
...