Ошибка при добавлении dataSourceProperties в "deployNodes" - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу настроить Corda Node с базой данных Oracle 11g в Corda 3.1 Enterprise Версия:

apply plugin: 'kotlin'
apply plugin: 'idea'
apply plugin: 'net.corda.plugins.cordapp'
apply plugin: 'net.corda.plugins.cordformation'
apply plugin: 'net.corda.plugins.quasar-utils'
apply plugin: 'maven-publish'
jar.baseName = "cordapp-example"

task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
directory "./build/nodes"
node {
    name "O=Notary Pool,L=Sao Paolo,C=BR"
    notary = [validating : false]
    p2pPort 10002
    rpcSettings {
        address("localhost:10003")
        adminAddress("localhost:10043")
    }
    webPort 10004
    cordapps = ["$corda_release_group:corda-finance:$corda_release_version"]
    rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
}
node {
    name "O=First Bank of London,L=London,C=GB"
    p2pPort 10005
    rpcSettings {
        address("localhost:10006")
        adminAddress("localhost:10046")
    }
    webPort 10007
    cordapps = ["$corda_release_group:corda-finance:$corda_release_version"]
    rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
    dataSourceProperties {
        dataSourceClassName = "oracle.jdbc.pool.OracleDataSource"
        dataSource.url = "jdbc:oracle:thin:@localhost:1521:db11g2"
        dataSource.user = "sys"
        dataSource.password = "98765"
    }
    database = {
        transactionIsolationLevel = READ_COMMITTED
        schema = "db11g2"
    }

}
}

При развертывании этой задачи возникает ошибка:

 FAILURE: Build failed with an exception.

 * Where:
 Build file 'D:\WorkPlaceCorda\TestDatabase\cordapp-example\kotlin-source\build.gradle' line: 94

 * What went wrong:
 A problem occurred evaluating project ':kotlin-source'.
 Could not find method dataSourceProperties() for arguments [build_4c7s0yjnncjhr0s832fhma3b4$_run_closure6$_closure16$_closure21@45dad5d1] on object of type net.corda.plugins.Node.

Итак, как настроить параметр «dataSourceProperties» для подключения этого узла к базе данных Oracle?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

@ Генри, чтобы выполнить то, что вы хотите сделать в задаче deployNodes, вы должны использовать запись с именем extraConfig, например:

task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
...
  node {
  ...
     extraConfig = [
       "dataSourceProperties.dataSourceClassName"  = "oracle.jdbc.pool.OracleDataSource",
       "dataSourceProperties.dataSource.url"       = "jdbc:oracle:thin:@localhost:1521:db11g2",
       "dataSourceProperties.dataSource.user"      = "sys",
       "dataSourceProperties.dataSource.password"  = "98765",
       "database.transactionIsolationLevel"        = "READ_COMMITED",
       "database.schema"                           = "YOUR_DB_SCHEMA",
       "database.runMigration"                     = "true"
    ]
  ...
  }

Вы можете использовать dataSourceProperties.{} напрямую, если вы изменяете какой-то файл node.conf.

Весь процесс подробно описан здесь: Corda с базами данных, отличными от H2

0 голосов
/ 12 сентября 2018

Я думаю, что ошибка описывает сбой сборки Gradle. Так что это должно быть связано с синтаксисом файла Gradle. Просто интересно, если это из-за отсутствия знака равенства ( = ), после тега dataSourceProperties в вашем файле Gradle?

Также обратите внимание, что из встроенного файла ресурсов загружен базовый набор значений по умолчанию. / node / src / main / resources / reference.conf модуля: gradle узла. Тег dataSourceProperties присутствует в наборе эталонной конфигурации по умолчанию. Мы должны использовать точно такой же набор ключей (включая двойные кавычки), переопределяя тег по умолчанию.

Пожалуйста, проверьте, обновив файл build.gradle следующим образом:

dataSourceProperties = {
    dataSourceClassName = "oracle.jdbc.pool.OracleDataSource"
    "dataSource.url" = "jdbc:oracle:thin:@localhost:1521:db11g2"
    "dataSource.user" = "sys"
    "dataSource.password" = "98765"
} 
...