【问题标题】:How to use HikariCP with WebSphere Liberty如何将 HikariCP 与 WebSphere Liberty 一起使用
【发布时间】:2017-05-23 15:12:17
【问题描述】:

我们正在使用 oracle 数据库,这就是我们在 liberty 配置文件上针对 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>

【问题讨论】:

  • 更改参考库以指向我的问题中提到的那些

标签: websphere websphere-liberty hikaricp


【解决方案1】:

意见部分:
首先,我会说可能没有必要将 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

验证您的配置:
如果您有 4 月测试版或更新版本,您可以使用测试连接服务来检查您的数据源配置是否有效。请参阅这篇文章,了解如何执行此操作:
Testing database connections in Liberty apps with REST APIs
如果您没有 April beta 或更新版本,您可以编写一个简单的测试 servlet 来尝试获取连接。

尝试使用 HikariCP:
您需要修改您的 jdbc 驱动程序 &lt;library&gt; 以包含 HikariCP jar。

接下来,修改您的 &lt;dataSource&gt; 以指向 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>

【讨论】:

  • 我非常同意观点部分,虽然我不是 Liberty 开发人员 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 2013-10-31
  • 2015-05-13
  • 2015-02-02
  • 2016-05-30
  • 1970-01-01
相关资源
最近更新 更多