java - Corda RPC : A hot observable returned from an RPC was never subscribed to

标签 java reactjs corda

我基于 Java Template 构建了一个 CorDapp 。最重要的是,我创建了一个 React 前端。现在,我想从我的前端开始一个流程。为此,我修改了模板服务器,以便 Controller 启动我的流程:

@GetMapping(value = "/templateendpoint", produces = "text/plain")
    private String templateendpoint() {
        proxy.startTrackedFlowDynamic(issueTokens.class, 30, "O=Bob, L=Berlin, C=DE");
        return "The flow was started";  
    }

此操作确实启动了向 Bob 发行 30 个代币的流程。通过查询鲍勃的金库,我可以看到流程已成功。但是,我在模板服务器上收到以下错误:

RPCClientProxyHandler.onRemoval - A hot observable returned from an RPC was never subscribed to.
This wastes server-side resources because it was queueing observations for retrieval.
It is being closed now, but please adjust your code to call .notUsed() on the observable to close it explicitly. (Java users: subscribe to it then unsubscribe). 
If you aren't sure where the leak is coming from, set -Dnet.corda.client.rpc.trackRpcCallSites=true on the JVM command line and you will get a stack trace with this warning.

在第一笔交易之后,我无法启动另一个流程。 .notUsed() 方法仅适用于 Kotlin。但是,我找不到订阅然后取消订阅可观察对象的有效方法。

有人能给我一个关于如何使用 Corda 流程实现此功能的示例吗?此外,将信息从前端传递到 Controller 类以将其用作流参数的最实用方法是什么?

最佳答案

出现错误的原因是客户端的 Observable 被垃圾回收了。

解决方案已在括号中提供- (Java 用户:订阅然后取消订阅)

因此,就您的情况而言,您可以执行以下操作:

Subscription subs = updates.subscribe();
subs.unsubscribe();

可能更实用的方法是将可观察实例保留为私有(private)属性 - 这样它就不会被垃圾收集。即。

private Observable observable;

引用号:https://docs.corda.net/docs/corda-os/4.4/clientrpc.html#observables

关于java - Corda RPC : A hot observable returned from an RPC was never subscribed to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62299540/

相关文章:

java - super buggy Netbeans 问题

java - 在将子类中的值发送到私有(private)父类(super class)变量之前检查它

kotlin - 自定义 ETH 结算器实现过程中的问题

java - 使用斐波那契数列生成毕达哥拉斯三元组

java - 如何使用 Framework Simple 将数据映射到正确的继承类

javascript - 从 UI 触发批处理文件

reactjs - react typescript : FunctionComponent with templated props

javascript - 在 react 类: How do I pass a variable inside same component中

database-schema - 如何使用 Corda Vault Extension 创建自定义架构

networking - 如何为corda网络创建自签名证书?