代码之家  ›  专栏  ›  技术社区  ›  Matthew Layton

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

  •  1
  • Matthew Layton  · 技术社区  · 6 年前

    在我的intellij项目中,我有两个模块,即cordapps。我还为每个

    • 跑步参与者A Cordapp
    • 运行参与者B 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.listenprocessdeTheexception:异常 希望在本地主机上侦听的进程:10000已死于 状态:2

    我的猜测是存在端口冲突,因为它们都试图使用相同的P2P、RPC和Web端口?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Joel    6 年前

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

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

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