corda - 无法反序列化 RPC 回复,请求的接口必须仅包含以 'get' 开头的方法,[corda] errorCode 15rlwi0
问题描述
我正在玩一个从这里派生的小项目:https ://github.com/corda/cash-issuer 。
这个 repo 建立在未发布的 corda 4.0 版本(快照)之上。我编写了一个小脚本来通过 rpc 客户端发行现金,效果很好。我可以从交互式 shell 中查询 Vault 并获得正确的结果:
run vaultQuery contractStateType: net.corda.finance.contracts.asset.Cash$State
states:
- state:
data: !<net.corda.finance.contracts.asset.Cash$State>
amount: "10000.00 EUR issued by O=PartyA, L=New York, C=US[01]"
...
但是,它无法在集成网络服务器中托管的 api 中执行相同的查询:
@GET
@Path("balances")
@Produces(MediaType.APPLICATION_JSON)
fun getBalances() : List<Cash.State> {
return rpcOps.vaultQueryBy<Cash.State>().states.map{it.state.data}
}
失败了
[ERROR] 19:21:57+0100 [Thread-3 (ActiveMQ-client-global-threads)] internal.RPCClientProxyHandler.artemisMessageHandler - Failed to deserialize RPC body [errorCode=15rlwi0, moreInformationAt=https://errors.corda.net/OS/4.0-SNAPSHOT/15rlwi0]
Failed to deserialize RPC reply: net.corda.core.utilities.Try$Success (erased) -> value(*) -> net.corda.finance.contracts.asset.Cash$State: Requested interfaces must consist only of methods that start with 'get': net.corda.core.contracts.FungibleAsset.withNewOwnerAndAmount
我在windows10上,没什么特别的。
解决方案
正如 Tbltzk 所指出的,这是作为 r3-cev.atlassian.net/browse/CORDA-2330 的一部分修复的错误。
Corda 的快照版本比官方版本经过更少的测试,因此更有可能包含错误。
推荐阅读
- json - 编写一个函数来解码通用 JSON。如何为 Codable.Protocol 提供参数?
- c# - 回调动作可以在 C# 中采用不同的参数吗?
- cassandra - sstableloader - 无法将 C 库链接到 JNA
- javascript - 来自 responseText 的 innerHTML:如何替换特殊字符?
- powerbi - Dax 表达式等效于 ISNOTBLANK()
- swift - Swift 中的 VPN - loadFromPreferences 未运行处理程序
- r - 画一个圆圈以突出显示 R 中曲线的最大值
- kentico - Kentico - 未能验证安全标头
- wolfram-mathematica - Mathematica:保持不变
- dart - 如何访问从 Google 的 flutter_chart 库中的 BaseChart 继承的属性?