Corda 4.0事务序列化问题

时间:2019-03-28 14:52:58

标签: corda

最近已升级到Corda 4.0,现在在尝试创建事务时看到序列化异常:

  

[错误] 10:09:49,500 [模拟网络] amqp.SerializationOutput。 --   序列化失败的方向=“序列化”,   type =“ net.corda.core.transactions.TraversableTransaction”,   msg =“为参数命令定义的getter返回类型   java.util.List>尚未发布   类型是java.util.List>“,   ClassChain =“ net.corda.core.transactions.TraversableTransaction”   {actor_id =仅用于测试,actor_owning_identity = O =供应商1,   L =伦敦,C = GB,actor_store_id = TEST,fibre-id = 10000001,   flow-id = e61b7da7-6826-4410-9414-1c03bebbc3fe,   invocation_id = 58c5f5ff-09f8-4bfa-bbe5-cf6b0ef47d06,   invocation_timestamp = 2019-03-28T10:09:46.205Z,origin =仅用于   测试,session_id = 58c5f5ff-09f8-4bfa-bbe5-cf6b0ef47d06,   session_timestamp = 2019-03-28T10:09:46.205Z,thread-id = 400}

任何想法是什么原因造成的?

2 个答案:

答案 0 :(得分:1)

任何时候您在Corda 4上看到这种形式的错误消息:

  

为参数[参数名称]定义的吸气剂返回类型[type]   基础类型是[完全相同的类型]

这是由于某些番石榴版本中的错误所致。

Corda 4使用番石榴版本25.1-jre。但是,如果您的节点加载了另一个覆盖了Corda的Java版本的Guava版本(例如21.0),您将看到此错误。

计划对Corda 4.1进行修复。

答案 1 :(得分:0)

升级到4.0后,我也遇到了这个问题。我的流程将事务返回为输出,并且出现TraversableTransaction序列化异常。我没有解决。我已经使用所有适当的数据,trxId等创建了流响应DTO。

示例:

SignedTransaction signedTransaction = subFlow(new FinalityFlow(signedTx, session));
response.setTrxId(signedTransaction.getId().toString());
return response;