无法反序列化RPC答复,请求的接口必须仅包含以'get'开头的方法,错误代码为15rlwi0

时间:2018-12-17 09:45:37

标签: corda

我正在玩一个从此处衍生的小项目:https://github.com/corda/cash-issuer

此存储库基于未发行的corda 4.0版本(快照)构建。 我写了一个小脚本,通过rpc客户端发行现金,效果很好。 我可以从交互式外壳查询保管库并获得正确的结果:

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]"
...

但是,它无法在集成Web服务器中托管的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上,没什么特别的。

1 个答案:

答案 0 :(得分:0)

正如Tbltzk所指出的,这是一个错误,已在r3-cev.atlassian.net/browse/CORDA-2330中修复。

Corda的快照发行版比正式发行版经过较少的测试,因此更有可能包含错误。