postgresql - 如何在 Corda Network Bootstrapper 中配置 JDBC 驱动程序目录?
问题描述
我正在使用Corda Network Bootstrapper使用 Docker 设置本地 Corda 网络,并尝试将 PostgreSQL 配置为数据库。
partya_node.conf
Network Bootstrapper 读取的文件:
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 配置为指向驱动程序的目录?
解决方案
相信你没有将驱动目录正确挂载到docker容器中,这可能是节点找不到驱动的原因。
您可以将驱动程序安装到/opt/corda/drivers
Corda docker 容器上的目录,并在node.conf
文件中使用jarDirs=["opt/corda/drivers"]
.
我猜您所指的共享目录是主机上的目录,docker 容器在安装到 docker 容器中的某个位置之前无法访问该目录。
根据评论更新:
您需要更新驱动程序目录路径。node.conf 文件被复制到单个节点文件夹,并在运行引导程序时引用复制的文件。因此,您只需将jarDirs
node.conf 中的更新为jarDirs=["../shared/drivers"]
,假设共享目录与引导程序 jar 和初始 node.conf 文件位于同一目录中。
推荐阅读
- asp.net-mvc - 如何在 MVC 的部分视图中填充导航选项卡上的数据?
- c++ - C++定义静态成员的正确方法是什么
- haskell - 如何在 Haskell 中为 IO 专门化 mapM
- gatling - Gatling:响应时间百分位数和延迟百分位数随时间的差异
- java - Libgdx 播放/暂停音乐
- android - 避免按下后退按钮时关闭 AlertDialog
- regex - 将正则表达式从 pcre 转换为 sed 以拆分字符串
- c++ - 某些输入的基数排序实现失败
- kubernetes - 取消或撤消删除 Kubernetes 集群中的 Persistent Volumes
- python-3.x - 如何使用机器学习或预测来解决 Python 3 中的这种回归?