如何通过 Tomee.xml 配置 HikariCP?
How to configure HikariCP via Tomee.xml?
我想在 TomEE 中测试 hikaricp。我已将 jar 文件添加到我的 lib 文件夹中,并尝试像这样定义资源:
<Resource id="myJtaDs" type="DataSource" class-name="com.zaxxer.hikari.HikariJNDIFactory" factory-name="getObjectInstance">
....
</Resource>
当我这样做时,启动时出现以下错误:
org.apache.xbean.recipe.MissingFactoryMethodException: Instance factory method has signature public com.zaxxer.hikari.HikariJNDIFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable) but expected signature public com.zaxxer.hikari.HikariJNDIFactory.getObjectInstance()
如何在我的 tomee.xml 中定义 HikariCP 数据源?
我还没有完成 tomee.xml,但尝试使用 HsqlDB 的 JPA。以下是 JPA persistence.xml properties.Good 运气。
<properties>
<property name="hibernate.connection.provider_class" value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider"/>
<property name="hibernate.hikari.dataSourceClassName" value="org.hsqldb.jdbc.JDBCDataSource"/>
<property name="hibernate.hikari.dataSource.url" value="jdbc:hsqldb:mem:test"/>
<property name="hibernate.hikari.dataSource.user" value="sa"/>
<property name="hibernate.hikari.dataSource.password" value=""/>
<property name="hibernate.hikari.connectionTimeout" value="1200"/>
<property name="hibernate.hikari.connectionTestQuery" value="select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.enable_lazy_load_no_trans" value="true"/>
</properties>
您可以将 HikariDataSource
包装在 JTADataSourceWrapperFactory
中以获得 JTA 支持 (see mail archives)。
然后,您可以通过tomee.xml
或resource.xml
定义如下:
<Resource id="hikariCP" class-name="com.zaxxer.hikari.HikariDataSource">
driverClassName org.hsqldb.jdbcDriver
jdbcUrl jdbc:hsqldb:mem:demo
username sa
password
<!-- other properties as required -->
</Resource>
<Resource id="demo" type="DataSource" class-name="org.apache.openejb.resource.jdbc.managed.JTADataSourceWrapperFactory" factory-name="create">
Delegate = hikariCP
</Resource>
在您的persistence.xml
中通过
添加数据源
<jta-data-source>java:openejb/Resource/demo</jta-data-source>
只需确保 HikariCP 库在您的类路径中可用。
旁注:设置 hibernate.connection.provider_class
将在 Hibernate 中创建一个连接池,该连接池不受容器管理。
我想在 TomEE 中测试 hikaricp。我已将 jar 文件添加到我的 lib 文件夹中,并尝试像这样定义资源:
<Resource id="myJtaDs" type="DataSource" class-name="com.zaxxer.hikari.HikariJNDIFactory" factory-name="getObjectInstance">
....
</Resource>
当我这样做时,启动时出现以下错误:
org.apache.xbean.recipe.MissingFactoryMethodException: Instance factory method has signature public com.zaxxer.hikari.HikariJNDIFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable) but expected signature public com.zaxxer.hikari.HikariJNDIFactory.getObjectInstance()
如何在我的 tomee.xml 中定义 HikariCP 数据源?
我还没有完成 tomee.xml,但尝试使用 HsqlDB 的 JPA。以下是 JPA persistence.xml properties.Good 运气。
<properties>
<property name="hibernate.connection.provider_class" value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider"/>
<property name="hibernate.hikari.dataSourceClassName" value="org.hsqldb.jdbc.JDBCDataSource"/>
<property name="hibernate.hikari.dataSource.url" value="jdbc:hsqldb:mem:test"/>
<property name="hibernate.hikari.dataSource.user" value="sa"/>
<property name="hibernate.hikari.dataSource.password" value=""/>
<property name="hibernate.hikari.connectionTimeout" value="1200"/>
<property name="hibernate.hikari.connectionTestQuery" value="select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.enable_lazy_load_no_trans" value="true"/>
</properties>
您可以将 HikariDataSource
包装在 JTADataSourceWrapperFactory
中以获得 JTA 支持 (see mail archives)。
然后,您可以通过tomee.xml
或resource.xml
定义如下:
<Resource id="hikariCP" class-name="com.zaxxer.hikari.HikariDataSource">
driverClassName org.hsqldb.jdbcDriver
jdbcUrl jdbc:hsqldb:mem:demo
username sa
password
<!-- other properties as required -->
</Resource>
<Resource id="demo" type="DataSource" class-name="org.apache.openejb.resource.jdbc.managed.JTADataSourceWrapperFactory" factory-name="create">
Delegate = hikariCP
</Resource>
在您的persistence.xml
中通过
<jta-data-source>java:openejb/Resource/demo</jta-data-source>
只需确保 HikariCP 库在您的类路径中可用。
旁注:设置 hibernate.connection.provider_class
将在 Hibernate 中创建一个连接池,该连接池不受容器管理。