【问题标题】:Error when creation data source for neo4j in websphere application server在 websphere 应用服务器中为 neo4j 创建数据源时出错
【发布时间】:2019-05-28 07:19:57
【问题描述】:

我试图在 websphere 应用服务器中为 neo4j 创建数据源,但连接失败。对此的任何指示都会有所帮助。

使用以下参数创建的 JDBC 驱动程序:

  • 名称:neo4j 驱动程序
  • 类路径:neo4j jdbc jar/neo4j-jdbc-driver-3.3.1.jar 的路径
  • 实现类名:org.neo4j.jdbc.Driver

使用以下内容创建的数据源:

  • jndi 名称:jdbc/neo4j

自定义属性:

  • 身份验证:容器
  • 类型:javax.sql.DataSource
  • 用户名:neo4j
  • 密码:密码
  • url:jdbc:neo4j:bolt://localhost:port
  • removeAbandonedOnBorrow : true
  • closeMethod:关闭

属性是根据https://github.com/neo4j-contrib/neo4j-jdbc中提供的指针添加的

这是日志中的错误:

java.lang.Exception: DSRA8101E: DataSource 类不能用作 一阶段:ClassCastException:org.neo4j.jdbc.bolt.BoltDriver 与 javax.sql.ConnectionPoolDataSource 不兼容 [5/27/19 13:12:41:533 UTC] 00000111 SystemErr R at com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:441) [5/27/19 13:12:41:533 UTC] 00000111 SystemErr R at com.ibm.ws.rsadapter.DSConfigHelper.getPooledConnection(DSConfigHelper.java:1340)

【问题讨论】:

    标签: neo4j websphere datasource


    【解决方案1】:

    根据其documentation Neo4j 不是兼容的 JDBC 驱动程序。

    我们涵盖了 JDBC-API 的这些方面,以及所有未涵盖的方面 明确提到应该假设没有实现

    它也没有实现所需的 javax.sql.DataSoruce 接口,因此无法在服务器中配置。您需要在应用程序代码中处理它。

    【讨论】:

      【解决方案2】:

      为了向将来可能会发现这篇文章的其他人澄清 - 是否可以直接配置到 java.sql.Driver 取决于是否使用 WebSphere Application Server 传统与 Liberty。

      在传统的 WebSphere Application Server 中可以使用更间接的方法,它涉及围绕驱动程序模拟 ConnectionPoolDataSource 类。在related stack overflow post 下讨论。

      使用 Liberty 18.0.0.3 及更高版本,可以直接配置仅指定 URL 的数据源,this knowledge center document 下给出了示例。

      这是 Liberty 中的示例数据源配置,

      <featureManager>
        <feature>jdbc-4.2</feature>
        <feature>jndi-1.0</feature>
        ... other features
      </featureManager>
      
      <dataSource jndiName="jdbc/neo4j" containerAuthDataRef="neo4jAuth">
        <jdbcDriver libraryRef="neo4j"/>
        <properties URL="jdbc:neo4j:bolt://localhost:7687"/>
      </dataSource>
      
      <authData id="neo4jAuth" user="neo4j" password="password"/>
      
      <library>
        <file name="C:/drivers/neo4j/neo4j-jdbc-driver-3.3.1.jar"/>
      </library>
      

      【讨论】:

      • 上面关于连接没有被池化的评论是不正确的,并且基于对文档的误解。不提供连接池增强功能与根本不提供连接池之间存在很大差异。 Liberty 确实汇集了通过驱动程序获得的连接。但是,缺少一些池增强功能,例如 javax.sql.ConnectionEventListener.connectionErrorOccurred 机制,驱动程序可以通过该机制通知错误连接池。即使这样,Liberty 也有其他检测方法,例如检查异常类型、SQLStates 和错误代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多