HikariCP を使用して jboss 構成ファイルで JNDI データソースを構成する方法 Hikari のヘルプ コンテンツには Tomcat 構成しかありません。
Spring webb アプリがあり、アプリケーション内で定義されたデータソースがあり、これを JNDI データソースに移動したいと考えています。
私のデータソースの定義は次のとおりです。
<datasource jndi-name="java:jboss/datasources/mydatasource" pool-name="mydatasource" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/database</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<datasource-class>com.zaxxer.hikari.HikariDataSource</datasource-class>
<driver>postgresql</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>10</max-pool-size>
</pool>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
</datasource>
そして、ドライバーの定義:
<driver name="postgresql" module="org.postgresql.jdbc">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
とりわけこのエラーが発生しています:
ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: 操作 ("add") が失敗しました - アドレス: ([ ("subsystem" => "datasources"), ("data-source" => "mydatasource") ]) - 失敗の説明: {"JBAS014771: 依存関係が見つからない/利用できないサービス" => [ "jboss.driver-demander.java:jboss/datasources/mydatasource が見つかりません [jboss.jdbc-driver.postgresql ]", "jboss.data-source.java:jboss/datasources/mydatasource がありません [jboss.jdbc-driver.postgresql]" ]}
では、これを構成する正しい方法は何ですか?
編集:
ガイドに従ってTomcatリソースを作成し、この質問で提供された情報を使用して、このDataSource定義にたどり着きました:
<datasource jta="false" jndi-name="java:jboss/mydatasource" pool-name="mydatasource" enabled="true" use-ccm="false">
<connection-url>jdbc:postgresql://localhost:5432/databasename</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>10</max-pool-size>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>username</user-name>
<password>password</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
postgresql ドライバーを Jboss にインストールして宣言しました。
そしてSpring構成では
...
@Bean
public DataSource dataSource() {
final JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
dataSourceLookup.setResourceRef(true);
DataSource dataSourceTemp = null;
try {
dataSourceTemp = dataSourceLookup.getDataSource("jdbc/mydatasource");
} catch (DataSourceLookupFailureException e) {
log.error("DataSource not found.");
}
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDataSource(dataSourceTemp);
return new HikariDataSource(hikariConfig);
}
...
このコードは HikariJNDIFactory コードに基づいており、すべてが機能しているように見えますが、接続のプロパティを使用してプロパティ オブジェクトを作成する必要があると思います。どのプロパティをオブジェクトに含める必要がありますか?