最近已升级到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}
任何想法是什么原因造成的?
答案 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;