gpt4 book ai didi

Corda 特定的 Web 服务器已弃用,并将在将来删除

转载 作者:行者123 更新时间:2023-12-03 01:39:49 25 4
gpt4 key购买 nike

在我们的 mac 操作系统上运行的节点显示错误信息,如下所示。这发生在两台不同的机器上。

Last login: Wed Oct 31 12:48:00 on ttys004
bash -c 'cd "/Users/chrisceliberti/PropertyListing/PropertyListing/PropertyListing/PropertyListing/PropertyListing/PropertyListing/build/nodes/PartyB" ; "/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/bin/java" "-Dname=PartyB-corda-webserver.jar" "-Dcapsule.jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5009 -javaagent:drivers/jolokia-jvm-1.3.7-agent.jar=port=7009,logHandlerClass=net.corda.webserver.JolokiaSlf4Adapter" "-jar" "corda-webserver.jar" && exit'
chriss-Air-2:~ chrisceliberti$ bash -c 'cd "/Users/chrisceliberti/PropertyListing/PropertyListing/PropertyListing/PropertyListing/PropertyListing/PropertyListing/build/nodes/PartyB" ; "/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/bin/java" "-Dname=PartyB-corda-webserver.jar" "-Dcapsule.jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5009 -javaagent:drivers/jolokia-jvm-1.3.7-agent.jar=port=7009,logHandlerClass=net.corda.webserver.JolokiaSlf4Adapter" "-jar" "corda-webserver.jar" && exit'
Listening for transport dt_socket at address: 5009
This Corda-specific web server is deprecated and will be removed in future.
Please switch to a regular web framework like Spring, J2EE or Play Framework.

我应该使用其他 Web 服务器,例如 Spring 还是有其他修复方法?

最佳答案

您应该切换到另一个网络服务器,例如 Spring。

尽管 Corda 3 包含节点 Web 服务器,但这是一项已弃用的功能,仅出于演示目的而继续存在。您应该使用现有技术创建自己的生产级网络服务器。

查看 Spring Webserver 示例 here 。这是一个连接到 Corda 节点的 Spring Web 服务器。这个例子是如何工作的?

  1. 我们创建一个组件,该组件在服务器启动时初始化,并与节点建立持久的 RPC 连接:

    /**
    * Wraps a node RPC proxy.
    *
    * The RPC proxy is configured based on the properties in `application.properties`.
    *
    * @param host The host of the node we are connecting to.
    * @param rpcPort The RPC port of the node we are connecting to.
    * @param username The username for logging into the RPC client.
    * @param password The password for logging into the RPC client.
    * @property proxy The RPC proxy.
    */
    @Component
    open class NodeRPCConnection(
    @Value("\${$CORDA_NODE_HOST}") private val host: String,
    @Value("\${$CORDA_USER_NAME}") private val username: String,
    @Value("\${$CORDA_USER_PASSWORD}") private val password: String,
    @Value("\${$CORDA_RPC_PORT}") private val rpcPort: Int): AutoCloseable {

    lateinit var rpcConnection: CordaRPCConnection
    private set
    lateinit var proxy: CordaRPCOps
    private set

    @PostConstruct
    fun initialiseNodeRPCConnection() {
    val rpcAddress = NetworkHostAndPort(host, rpcPort)
    val rpcClient = CordaRPCClient(rpcAddress)
    val rpcConnection = rpcClient.start(username, password)
    proxy = rpcConnection.proxy
    }

    @PreDestroy
    override fun close() {
    rpcConnection.notifyServerAndClose()
    }
    }
  2. 我们将此Component注入(inject)到每个 Controller 中,并使用它与节点交互:

    /**
    * A CorDapp-agnostic controller that exposes standard endpoints.
    */
    @RestController
    @RequestMapping("/") // The paths for GET and POST requests are relative to this base path.
    class StandardController(private val rpc: NodeRPCConnection) {

    companion object {
    private val logger = LoggerFactory.getLogger(RestController::class.java)
    }

    private val proxy = rpc.proxy

    @GetMapping(value = "/status", produces = arrayOf("text/plain"))
    private fun status() = "200"

    @GetMapping(value = "/servertime", produces = arrayOf("text/plain"))
    private fun serverTime() = LocalDateTime.ofInstant(proxy.currentNodeTime(), ZoneId.of("UTC")).toString()

    @GetMapping(value = "/addresses", produces = arrayOf("text/plain"))
    private fun addresses() = proxy.nodeInfo().addresses.toString()

    @GetMapping(value = "/identities", produces = arrayOf("text/plain"))
    private fun identities() = proxy.nodeInfo().legalIdentities.toString()

    @GetMapping(value = "/platformversion", produces = arrayOf("text/plain"))
    private fun platformVersion() = proxy.nodeInfo().platformVersion.toString()

    @GetMapping(value = "/peers", produces = arrayOf("text/plain"))
    private fun peers() = proxy.networkMapSnapshot().flatMap { it.legalIdentities }.toString()

    @GetMapping(value = "/notaries", produces = arrayOf("text/plain"))
    private fun notaries() = proxy.notaryIdentities().toString()

    @GetMapping(value = "/flows", produces = arrayOf("text/plain"))
    private fun flows() = proxy.registeredFlows().toString()

    @GetMapping(value = "/states", produces = arrayOf("text/plain"))
    private fun states() = proxy.vaultQueryBy<ContractState>().states.toString()
    }

关于Corda 特定的 Web 服务器已弃用,并将在将来删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53089616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com