【问题标题】:I need to get the underlying java.sql.Connection from Vert.x's SQLConnection我需要从 Vert.x 的 SQLConnection 获取底层的 java.sql.Connection
【发布时间】:2018-09-13 23:03:51
【问题描述】:

我正在使用 vert.x 的 JDBCClient 来获取我的数据库连接,它只给了我 io.vertx.ext.sql.SQLConnection 或 io.vertx.reactivex.ext.sql.SQLConnection 并且它们都没有扩展 java.sql .连接。

为了从 Verticle 调用 Liquibase,我需要一个 java.sql.Connection。

我知道 Vert.x 在后面使用 C3Po,但我找不到任何可以为我提供底层连接的方法。

我怎样才能做到这一点?

【问题讨论】:

    标签: java liquibase vert.x


    【解决方案1】:

    您是否尝试过:

    final JDBCClient dbClient = JDBCClient.createShared(vertx, new JsonObject()
                .put("url", dbUrl)
                .put("user", user)
                .put("password", pass)
                .put("driver_class", "you.driver")
                .put("max_pool_size", 30)
        );
    

    【讨论】:

    • 当然,vert.x jdbc API 只返回不扩展 java.sql.Connection 的 io.vertx.ext.sql.SQLConnection
    • 但是为什么需要 java.sql.Connection 呢?它正在阻塞。
    • 正如他在问题中提到的,Liquibase 需要java.sql.Connection
    【解决方案2】:

    如果您使用的是最新版本,SQLConnection 有一个 unwrap 方法。如docs所示:

    default <N> N unwrap()

    如果可用,则返回底层 Connection 对象。这不是由客户强制执行的。

    JDBCClient 应该返回一个java.sql.Connection。使用后别忘了在原SQLConnection上拨打close

    【讨论】:

      猜你喜欢
      • 2013-05-09
      • 2011-06-05
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 2013-01-19
      • 1970-01-01
      相关资源
      最近更新 更多