【问题标题】:How to configure JDBC drivers dir in Corda Network Bootstrapper?如何在 Corda Network Bootstrapper 中配置 JDBC 驱动程序目录?
【发布时间】:2020-11-04 04:47:30
【问题描述】:

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

  • 网络引导程序读取的partya_node.conf 文件:
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
}
  • shared/drivers 目录包含postgresql-42.2.14.jar

  • 当我运行网络引导工具时:java -jar corda-tools-network-bootstrapper-4.5.jar

我收到以下错误:

[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 配置为指向驱动程序的目录?

【问题讨论】:

  • 您的 cordapp 包含在哪里?

标签: postgresql jdbc corda


【解决方案1】:

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

您可以将驱动程序挂载到 Corda docker 容器上的 /opt/corda/drivers 目录,并在 node.conf 文件中使用 jarDirs=["opt/corda/drivers"] 指向它。

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

根据评论更新:

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

【讨论】:

  • 嗨,阿舒托什!驱动程序映射在docker-compose 中,并且在启动网络之前发生错误,此时网络引导程序正在为每个节点生成配置。我已更新问题以包含 docker-compose config。
  • 根据评论更新答案
猜你喜欢
  • 2018-10-19
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多