Corda - 在单独的进程上运行内存节点不起作用

时间:2018-05-29 14:01:12

标签: corda

在我的IntelliJ项目中,我有两个模块,即CorDapps。我也有每个

的运行配置
  • 运行参与者A CorDapp
  • 运行参与者B CorDapp

运行其中任何一个都会在内存节点上运行CorDapp

package com.demo.cordapp.participant_a

import net.corda.core.utilities.getOrThrow
import net.corda.testing.driver.DriverParameters
import net.corda.testing.driver.driver
import net.corda.testing.node.User

class Application {
    companion object {
        @JvmStatic
        fun main(args: Array<String>) {

            val parameters = DriverParameters(
                    isDebug = true,
                    waitForAllNodesToFinish = true,
                    extraCordappPackagesToScan = listOf("com.demo.shared.domain")
            )

            driver(parameters) {

                startNode(
                        providedName = PARTICIPANT_1_NAME,
                        rpcUsers = listOf(User("user1", "test", permissions = setOf("ALL")))
                ).getOrThrow()
            }
        }
    }
}

如果我首先启动参与者A的节点,它可以正常工作,但是参与者B收到错误,反之亦然。错误如下

  

线程“main”中的异常   net.corda.testing.node.internal.ListenProcessDeathException:The   预计会在localhost上监听的进程:10000已经死了   状态:2

我的猜测是存在端口冲突,因为他们都试图使用相同的p2p,rpc,Web端口?

1 个答案:

答案 0 :(得分:1)

DriverParameters有一个portAllocation参数,用于确定如何将端口分配给节点。

默认为PortAllocation.Incremental(10000)。对于其中一个节点,您应该将其设置为其他节点(例如PortAllocation.Incremental(20000))。

如果您在调试模式下运行,还需要修改debugPortAllocation