首页 > 解决方案 > 如何在 Corda Network Bootstrapper 中配置 JDBC 驱动程序目录?

问题描述

我正在使用Corda Network Bootstrapper使用 Docker 设置本地 Corda 网络,并尝试将 PostgreSQL 配置为数据库。

devMode=true
myLegalName="O=PartyA,L=Paris,C=FR"
p2pAddress="partya:10200"
rpcSettings {
  address="0.0.0.0:10201"
  adminAddress="0.0.0.0:10202"
}
dataSourceProperties = {
    dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
    dataSource.url = "jdbc:postgresql://pg_partya:5432/db_partya"
    dataSource.user = "pg_user"
    dataSource.password = "pg_secret"
}
database = {
    transactionIsolationLevel = READ_COMMITTED
}
jarDirs=["shared/drivers"]
security {
  authService {
    dataSource {
      type=INMEMORY
      users=[
        {
          password=test
          permissions=[
            ALL
          ]
          user=user1
        }
      ]
    }
  }
}
sshd {
  port = 2222
}

我收到以下错误:

[ERROR] 15:51:24-0300 [main] internal.NodeStartupLogging. - Could not find the database driver class. Please add it to the drivers directory. [Error Code: database-missing-driver For further information, please go to https://docs.corda.net/docs/corda-os/4.5/error-codes.html] - Could not find the database driver class. Please add it to the 'drivers' folder. [errorCode=1oswgkz, moreInformationAt=https://errors.corda.net/OS/4.5/1oswgkz]
... still waiting. If this is taking longer than usual, check the node logs.

[编辑] JDBC 驱动程序被映射为一个卷docker-compose

    volumes:
      - ./partya_node.conf:/etc/corda/node.conf
      - ./partya/certificates:/opt/corda/certificates
      - ./partya/persistence:/opt/corda/persistence
      - ./partya/logs:/opt/corda/logs
      - ./shared/cordapps:/opt/corda/cordapps
      - ./shared/node-infos:/opt/corda/additional-node-infos
      - ./shared/network-parameters:/opt/corda/network-parameters
      - ./shared/drivers/postgresql-42.2.14.jar:/opt/corda/drivers/postgresql-42.2.14.jar

是否可以将 Corda Network Bootstrapper 配置为指向驱动程序的目录?

标签: postgresqljdbccorda

解决方案


相信你没有将驱动目录正确挂载到docker容器中,这可能是节点找不到驱动的原因。

您可以将驱动程序安装到/opt/corda/driversCorda docker 容器上的目录,并在node.conf文件中使用jarDirs=["opt/corda/drivers"].

我猜您所指的共享目录是主机上的目录,docker 容器在安装到 docker 容器中的某个位置之前无法访问该目录。

根据评论更新:

您需要更新驱动程序目录路径。node.conf 文件被复制到单个节点文件夹,并在运行引导程序时引用复制的文件。因此,您只需将jarDirsnode.conf 中的更新为jarDirs=["../shared/drivers"],假设共享目录与引导程序 jar 和初始 node.conf 文件位于同一目录中。


推荐阅读