【发布时间】:2014-10-05 07:35:44
【问题描述】:
如何使用 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>
我遇到了这个错误:
错误 [org.jboss.as.controller.management-operation](控制器引导线程)JBAS014613:操作(“添加”)失败 - 地址:([ (“子系统”=>“数据源”), (“数据源”=>“我的数据源”) ]) - 失败描述:{“JBAS014771:缺少/不可用依赖项的服务”=> [ “jboss.driver-demander.java:jboss/datasources/mydatasource 丢失 [jboss.jdbc-driver.postgresql]”, “jboss.data-source.java:jboss/datasources/mydatasource 丢失 [jboss.jdbc-driver.postgresql]” ]}
那么正确的配置方法是什么?
编辑:
按照指南创建 Tomcat 资源并使用question 中提供的信息,我来到了这个 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>
我在 Jboss 中安装了 postgresql 驱动并声明了它。
在 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 代码,似乎一切正常,但我想我必须创建一个带有连接属性的属性对象,我必须在对象中包含哪些属性?
【问题讨论】:
标签: java spring postgresql jboss hikaricp