如何将 HikariCP 与 WebSphere Liberty 结合使用
How to use HikariCP with WebSphere Liberty
我们正在使用 oracle 数据库,这就是我们在 liberty profile 上针对 oracle 配置 JNDI 的方式,如果 javax.sql.ConnectionPoolDataSource.
我想改用 hikarui-cp
<library id="oracleJDBCJars" name="oracleJDBCJars">
<fileset dir="${shared.resource.dir}/oracle-jars" includes="*.jar"/>
</library>
<dataSource beginTranForResultSetScrollingAPIs="true"
beginTranForVendorAPIs="false"
commitOrRollbackOnCleanup="rollback"
connectionManagerRef="default-conn-mgr"
isolationLevel="TRANSACTION_READ_COMMITTED"
jndiName="jdbc/dev"
transactional="true"
type="javax.sql.ConnectionPoolDataSource">
<jdbcDriver libraryRef="oracleJDBCJars"/>
<properties.oracle currentSchema="DEV"
databaseName="DBU"
password="Admin12"
portNumber="3714"
serverName="host.local.com"
user="ADMIN"/>
</dataSource>
意见部分:
首先,我会说可能没有必要将 HikariCP 与 Java EE 应用程序服务器一起使用。根据我的阅读,HikariCP 是一个很棒的连接池,如果您处于 Java SE 环境,那么使用 是有意义的。在 EE 环境中使用 HikariCP 可能会带来一些好处,但是当您只能使用 Liberty 连接池时,您将需要跳过额外的环节才能使其正常工作。在我看来,您的开发时间最好花在其他地方,因为 Liberty 已经有一个经过良好测试、性能良好的开箱即用连接池。在已经提供良好连接池的应用服务器上使用备用连接池似乎是一种不必要的微优化。
免责声明:我是一名 Liberty 开发人员,负责连接池等方面的工作。
回答你的问题:
您的配置适用于 DB2 数据库,而不是 Oracle 数据库(即应该使用 properties.oracle
而不是 properties.db2.jcc
)。此外,它还指定了许多不必要的附加属性。
您的配置可以简化为:
<library id="oracleJDBCJars" name="oracleJDBCJars">
<fileset dir="${shared.resource.dir}/oracle-jars" includes="*.jar"/>
</library>
<dataSource jndiName="jdbc/dev">
<jdbcDriver libraryRef="DB2JCC4Jars"/>
<properties.oracle URL="jdbc:oracle:thin:@//host.local.com:3714/DBU"
password="Admin12"
user="ADMIN"/>
</dataSource>
有关在 Liberty 中配置数据源的详细信息,请参阅此文档:
Configuring relational database connectivity in Liberty
验证您的配置:
如果您有四月测试版或更新版本,您可以使用测试连接服务来检查您的数据源配置是否有效。有关如何执行此操作的演练,请参阅本文:
Testing database connections in Liberty apps with REST APIs
如果您没有 4 月测试版或更新版本,您可以编写一个简单的测试 servlet 来尝试建立连接。
正在尝试使用 HikariCP:
您需要修改 jdbc 驱动程序 <library>
以包含 HikariCP jar。
接下来,修改您的 <dataSource>
以指向 HikariDataSource
实现。您将需要设置 2 个属性(如下所示):
<!-- Tell the <dataSource> to use `javax.sql.DataSource` (as opposed to auto-detecting ConnectionPoolDataSource or XADataSource) -->
<dataSource jndiName="jdbc/dev" type="javax.sql.DataSource">
<!-- Tell the <jdbcDriver> what implementation class to use for `javax.sql.DataSource` -->
<jdbcDriver libraryRef="DB2JCC4Jars" javax.sql.DataSource="com.zaxxer.hikari.HikariDataSource"/>
<properties.oracle URL="jdbc:oracle:thin:@//host.local.com:3714/DBU"
password="Admin12"
user="ADMIN"/>
</dataSource>
我们正在使用 oracle 数据库,这就是我们在 liberty profile 上针对 oracle 配置 JNDI 的方式,如果 javax.sql.ConnectionPoolDataSource.
我想改用 hikarui-cp <library id="oracleJDBCJars" name="oracleJDBCJars">
<fileset dir="${shared.resource.dir}/oracle-jars" includes="*.jar"/>
</library>
<dataSource beginTranForResultSetScrollingAPIs="true"
beginTranForVendorAPIs="false"
commitOrRollbackOnCleanup="rollback"
connectionManagerRef="default-conn-mgr"
isolationLevel="TRANSACTION_READ_COMMITTED"
jndiName="jdbc/dev"
transactional="true"
type="javax.sql.ConnectionPoolDataSource">
<jdbcDriver libraryRef="oracleJDBCJars"/>
<properties.oracle currentSchema="DEV"
databaseName="DBU"
password="Admin12"
portNumber="3714"
serverName="host.local.com"
user="ADMIN"/>
</dataSource>
意见部分:
首先,我会说可能没有必要将 HikariCP 与 Java EE 应用程序服务器一起使用。根据我的阅读,HikariCP 是一个很棒的连接池,如果您处于 Java SE 环境,那么使用 是有意义的。在 EE 环境中使用 HikariCP 可能会带来一些好处,但是当您只能使用 Liberty 连接池时,您将需要跳过额外的环节才能使其正常工作。在我看来,您的开发时间最好花在其他地方,因为 Liberty 已经有一个经过良好测试、性能良好的开箱即用连接池。在已经提供良好连接池的应用服务器上使用备用连接池似乎是一种不必要的微优化。
免责声明:我是一名 Liberty 开发人员,负责连接池等方面的工作。
回答你的问题:
您的配置适用于 DB2 数据库,而不是 Oracle 数据库(即应该使用 properties.oracle
而不是 properties.db2.jcc
)。此外,它还指定了许多不必要的附加属性。
您的配置可以简化为:
<library id="oracleJDBCJars" name="oracleJDBCJars">
<fileset dir="${shared.resource.dir}/oracle-jars" includes="*.jar"/>
</library>
<dataSource jndiName="jdbc/dev">
<jdbcDriver libraryRef="DB2JCC4Jars"/>
<properties.oracle URL="jdbc:oracle:thin:@//host.local.com:3714/DBU"
password="Admin12"
user="ADMIN"/>
</dataSource>
有关在 Liberty 中配置数据源的详细信息,请参阅此文档:
Configuring relational database connectivity in Liberty
验证您的配置:
如果您有四月测试版或更新版本,您可以使用测试连接服务来检查您的数据源配置是否有效。有关如何执行此操作的演练,请参阅本文:
Testing database connections in Liberty apps with REST APIs
如果您没有 4 月测试版或更新版本,您可以编写一个简单的测试 servlet 来尝试建立连接。
正在尝试使用 HikariCP:
您需要修改 jdbc 驱动程序 <library>
以包含 HikariCP jar。
接下来,修改您的 <dataSource>
以指向 HikariDataSource
实现。您将需要设置 2 个属性(如下所示):
<!-- Tell the <dataSource> to use `javax.sql.DataSource` (as opposed to auto-detecting ConnectionPoolDataSource or XADataSource) -->
<dataSource jndiName="jdbc/dev" type="javax.sql.DataSource">
<!-- Tell the <jdbcDriver> what implementation class to use for `javax.sql.DataSource` -->
<jdbcDriver libraryRef="DB2JCC4Jars" javax.sql.DataSource="com.zaxxer.hikari.HikariDataSource"/>
<properties.oracle URL="jdbc:oracle:thin:@//host.local.com:3714/DBU"
password="Admin12"
user="ADMIN"/>
</dataSource>