当前位置: 首页 > 知识库问答 >
问题:

Corda和Corda Enterprise节点交互期间出现序列化方案错误

翁宜年
2023-03-14

我有一个具有两个节点的网络:

  • 运行Corda Enterprise 3
  • 运行Corda(开源)3的NodeB

NodeA使用Corda Finance CorDapp将现金转移到NodeB时,我得到了不支持序列化方案形式的例外。

如果Finance CorDapp是针对Corda Enterprise 3.2编译的,我会得到以下堆栈跟踪:

org_apache_activemq_artemis_api_core_client_MessageHandler不支持的操作异常:序列化方案([636F7264610000],RPCClient)不支持。在net.corda.serialization.internal.SerializationFactoryImpl$SchemeFor$1.invoke(SerializationScheme.kt:134)atnet.corda.serialization.internal.SerializationFactoryImpl$SchemeFor$1.invoke(SerializationScheme.kt:103)atjava.util.concurrent.ContoptHashMap.computeIfAbent(ContoptHashMap.java:1660)atnet.corda.serialization.internal.SerializationFactoryImpl.schemeFor(SerializationScheme.kt:124)atnet.corda.serialization.internal.SerializationFactoryImpl.access$SchemeFor(SerializationScheme.kt:103)atnet.corda.serialization.internal.SerializationFactoryImpl$desialize1$1.invoke(SerializationScheme.kt:134)atnet.corda.core.serialization.SerializationFjava.lang.MONtContext(SerializationAPI. kt: 71)atnet.corda.serialization.internal.SerializationFactoryImpl$desialize1.apply(SerializationScheme.kt:128)atnet.corda.serialization.internal.SerializationFactoryImpl$反序列化$1.apply(SerializationS在org. apache. actiemq. artemis. core. client. impl中的Client消费者信息。在org. apache. actiemq. artemis. core. client. impl中的客户消费者信息。在org. apache. actiemq. artemis. core. Client. impl中的客户消费者信息400美元(客户消费者信息。java: 50)。在org. apache. actiemq. artemis. utils. actors中的客户消费者信息$Runner. run(客户消费者信息管理. java: 1125)。在org. apache. actiemq. artemis. utils. actor中的OrderedExecutor. doTask(OrderedExecutor. java: 42)。在org. apache. actiemq. artemis. utils. actors中的OrderedExecutor. doTask(OrderedExecutor. java: 31)。在java. utils. ProcessorBase中的ProcessorBase. java: 66)

如果Finance CorDapp是根据Corda(开源)3.3编译的,我会得到以下堆栈跟踪:

[警告]2018-10-02T11:06:54096Z[线程1(ActiveMQ客户端全局线程)]消息传递。RPCServer。clientartemissessagehandler-入站RPC失败{actor\u id=corda,actor\u owningIdentity=O=PartyB,L=London,C=GB,actor\u store\u id=NODE\u CONFIG,invocation\u id=ae1b8b8d-682a-4181-acba-45c061188531,invocation\u timestamp=2018-10-02T11:06:54.094Z,session\u id=85154c4f-cdfa-4f76-b888-51d8f862c3b1,session\u timestamp=2018-10-02T11:06:54.050Z}爪哇。lang.UnsupportedOperationException:不支持序列化方案。净利润。科尔达。诺代皮。内部的序列化。NotSupportedSerializationScheme。doThrow(SerializationScheme.kt:19)~[corda-node-api-3.2-corda.jar:?]净利润。科尔达。诺代皮。内部的序列化。NotSupportedSerializationScheme。反序列化(SerializationScheme.kt:23)~[corda-node-api-3.2-corda.jar:?]净利润。科尔达。诺代皮。内部的序列化。SerializationFactoryImpl$反序列化$1$1。调用(SerializationScheme.kt:111)~[corda-node-api-3.2-corda.jar:?]净利润。科尔达。果心序列化。SerializationFactory。withCurrentContext(SerializationAPI.kt:66)~[corda-core-3.2-corda.jar:?]净利润。科尔达。诺代皮。内部的序列化。SerializationFactoryImpl$反序列化$1。调用(SerializationScheme.kt:111)~[corda-node-api-3.2-corda.jar:?]净利润。科尔达。诺代皮。内部的序列化。SerializationFactoryImpl$反序列化$1。调用(SerializationScheme.kt:86)~[corda-node-api-3.2-corda.jar:?]净利润。科尔达。果心序列化。SerializationFactory。A当前(SerializationAPI.kt:80)~[corda-core-3.2-corda.jar:?]净利润。科尔达。诺代皮。内部的序列化。SerializationFactoryImpl。反序列化(SerializationScheme.kt:111)~[corda-node-api-3.2-corda.jar:?]净利润。科尔达。节点。服务。消息传递。RPCServer。clientArtemisMessageHandler(RPCServer.kt:571)[corda-node-3.2-corda.jar:?]净利润。科尔达。节点。服务。消息传递。RPCServer。访问$clientArtemisMessageHandler(RPCServer.kt:79)[corda-node-3.2-corda.jar:?]净利润。科尔达。节点。服务。消息传递。RPCServer$createRpcConsumer$1。调用(RPCServer.kt:196)[corda-node-3.2-corda.jar:?]净利润。科尔达。节点。服务。消息传递。RPCServer$createRpcConsumer$1。调用(RPCServer.kt:79)[corda-node-3.2-corda.jar:?]净利润。科尔达。节点。服务。消息传递。RPCServerKt$sam$MessageHandler$5b9bfc45。onMessage(RPCServer.kt)[corda-node-3.2-corda.jar:?]位于组织。阿帕奇。activemq。阿耳特弥斯。果心客户实施。客户消费者。callOnMessage(ClientConsumerImpl.java:997)[artemis-core-client-2.2.0.jar:2.2.0]位于org。阿帕奇。activemq。阿耳特弥斯。果心客户实施。客户消费者。访问org上的400美元(ClientConsumerImpl.java:49)[artemis-core-client-2.2.0.jar:2.2.0]。阿帕奇。activemq。阿耳特弥斯。果心客户实施。ClientConsumerImpl$Runner。在org上运行(ClientConsumerImpl.java:1120)[artemis-core-client-2.2.0.jar:2.2.0]。阿帕奇。activemq。阿耳特弥斯。UTIL。演员。OrderedExecutor。org上的doTask(OrderedExecutor.java:42)[artemis-commons-2.2.0.jar:2.2.0]。阿帕奇。activemq。阿耳特弥斯。UTIL。演员。OrderedExecutor。org上的doTask(OrderedExecutor.java:31)[artemis-commons-2.2.0.jar:2.2.0]。阿帕奇。activemq。阿耳特弥斯。UTIL。演员。ProcessorBase$ExecutorTask。在java上运行(ProcessorBase.java:53)[artemis-commons-2.2.0.jar:2.2.0]。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1149)[?:1.8.0\u 171]。util。同时发生的ThreadPoolExecutor$工作者。在java上运行(ThreadPoolExecutor.java:624)[?:1.8.0\u 171]。lang.Thread。运行(Thread.java:748)[?:1.8.0\u 171][警告]2018-10-02T11:06:54162Z[线程-0(ActiveMQ客户端全局线程)]消息传递。RPCServer。bindingRemovalArtemisMessageHandler-在地址RPC上检测到RPC客户端断开连接。客户科尔达。4301680594427178011,收割调度{}

我如何解决这个问题?

共有1个答案

朱淮晨
2023-03-14

这是Corda 3中的一个错误,其中:

  • 针对Corda Enterprise 3编译的CorDapp无法在Corda 3节点上运行
  • 针对Corda 3编译的CorDapp无法在Corda Enterprise 3节点上运行

这是因为Corda 3使用Kryo进行RPC,而Corda Enterprise 3使用AMQP进行RPC。

有两种解决方法:

  • 编译CorDapp两次-一次用于Corda 3节点,一次用于Corda Enterprise 3节点
  • 升级至Corda 4
 类似资料:
  • 我在本地有一个引导corda网络,并将这些工件分发给相应的VM。当我启动其中一个节点时,我收到以下错误:我使用azure sql作为后端,并且使用corda Enterprise 4.3编译了jar,并且使用的数据库驱动程序是jdbc 6.4。 IntelliJ项目目标设置为仅Javajdk 1.8。 基本信息。-数据库连接url是< br> : jdbc:sqlserver://

  • 我已经运行了Corda DB迁移工具并创建了一个.jar,其中包含表示我的CordApps的状态对象的表的.sql脚本,如 https://docs.corda.r3.com/database-management.html#database-management-tool 但是将.jar放在节点的/cordapps文件夹中后,我收到一个错误,指示校验和验证失败:“liquibase.except

  • 问题内容: 我有一个对象,即时通讯读取和写入,并从和。我不断收到Java期望的错误,但发现了另一个。 在我的课堂上,我已经实现并拥有一个我认为足够的领域。 我是Java序列化的新手。我在这里想念什么? 编辑 如果有关系,我实际上是在尝试读写 这是完整的痕迹: 问题答案: 您正在读取文件吗?在这种情况下,是否立即添加serialVersionUID无关紧要,它不同于文件中存储的那个,并且会创建异常。

  • 本文向大家介绍C#实现XML与实体类之间相互转换的方法(序列化与反序列化),包括了C#实现XML与实体类之间相互转换的方法(序列化与反序列化)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现XML与实体类之间相互转换的方法。分享给大家供大家参考,具体如下: PS:小编这里再来为大家推荐几款关于xml操作的在线工具供大家免费使用。相信在以后开发中可以用的到: 在线XML格式化/压缩工

  • 问题内容: 是否可能:在类中有一个字段,而在Jackson库中进行序列化/反序列化时却为其使用不同的名称? 例如,我有“ Coordiantes”类。 对于从JSON反序列化,希望具有以下格式: 但是当我序列化对象时,结果应该是这样的: 我试图通过在getter和setter上都应用注释(具有不同的值)来实现此目的: 但我有一个例外: org.codehaus.jackson.map.exc.Un

  • 在成功执行deployNodes命令后,我尝试在nodes文件夹中运行runnodes命令。四个节点被调用——公证人、甲方、乙方、甲骨文。公证节点处于工作状态,但在甲方、乙方、Oracle节点中,我得到了下面提到的错误:- [错误]15:19:15 0530[main]内部NodeStartupLogging。invoke-节点启动期间出现异常:尝试在现有平台流上注册:类net.corda.con