Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Corda RPC:从未订阅从RPC返回的热可观察对象_Java_Reactjs_Corda - Fatal编程技术网

Java Corda RPC:从未订阅从RPC返回的热可观察对象

Java Corda RPC:从未订阅从RPC返回的热可观察对象,java,reactjs,corda,Java,Reactjs,Corda,我建立了一个CorDapp的基础上。在此基础上,我创建了一个React前端。现在,我想从我的前端开始一个流。为此,我修改了模板服务器,以便控制器启动我的流: @GetMapping(value = "/templateendpoint", produces = "text/plain") private String templateendpoint() { proxy.startTrackedFlowDynamic(issueTokens.class, 30, "O=B

我建立了一个CorDapp的基础上。在此基础上,我创建了一个React前端。现在,我想从我的前端开始一个流。为此,我修改了模板服务器,以便控制器启动我的流:

@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个令牌的流。通过查询Bob的保险库,我可以看出流程是成功的。但是,我在模板服务器上遇到以下错误:

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。然而,我找不到一个有效的方法来订阅然后取消订阅observable


有谁能给我一个关于如何用Corda流实现这一点的例子吗?此外,为了将信息用作流参数,将信息从前端传递到控制器类最实用的方法是什么?

出现错误的原因是客户端上的可观察对象被垃圾收集

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

所以在你的情况下,你可以这样做:

Subscription subs = updates.subscribe();
subs.unsubscribe();
可能更实用的方法是将可观察实例作为私有属性保留,这样它就不会被垃圾收集。即

private Observable observable;

Ref:

如果您试图使用Corda Observable,上述不是错误,而是警告。您能否共享您的Vault查询。Vault查询仅提供有关状态本身的基本信息。比如令牌的值和事务哈希。谢谢你的回答。你能指定“更新”是如何定义的吗?那就是rx.可观测对象。假设代理是CordaRPCOps类的一个实例:
observeable update=proxy.vaultTrack(iostate.class).getUpdates