Corda节点与Spring Boot客户端同时关闭

3

我有一个节点在我的机器上运行,同时有一个Spring Boot客户端。客户端连接到节点的RPC端口,一切都很顺利,但当我关闭客户端时,节点崩溃了,我不得不重新启动它。这是为什么发生的,是个bug还是我做错了什么。我也将它们部署在云上,并且遇到了相同的问题。

 Corda Open Source 4.0 (503a2ff) May 16 11:37:43 broker java[16853]: Logs can be found in : /opt/corda/logs May 16 11:37:58 broker java[16853]: Advertised P2P messaging addresses : 35.228.97.4:10011 May 16 11:37:58 broker java[16853]: RPC connection address : 10.166.0.2:10012 May 16 11:37:58 broker java[16853]: RPC admin connection address : 10.166.0.2:10050 May 16 11:38:01 broker java[16853]: Loaded 2 CorDapp(s) : Contract CorDapp: Template CorDapp version 1 by vendor Corda Ope May 16 11:38:01 broker java[16853]: Node for "Broker" started up and registered in 19.86 sec May 16 11:38:01 broker java[16853]: SSH server listening on port : 2222 May 16 12:10:03 broker java[16853]: Shutting down ...
1个回答

1

这取决于您如何创建 CordaRPCOps 类。

如果它是一个 bean,则在客户端关闭时会调用 CordaRPCOps.shutdown。这是由于 Spring 默认触发任何名为 shutdown 的方法的所有 bean。因此,通过不将其创建为 bean(例如,使用包装器类来包装 CordaRPCOps 并将其创建为 bean)可以解决此问题。

或者,您可以通过以下方式定义 bean 来告诉 Spring 不要触发关闭方法:

@Bean(destroyMethod = "")
public CordaRPCOps proxy() {}

1
难道您不认为这应该由 Corda 处理吗?任何错误实现的人都可能关闭节点。 - Arun Salaria
我们内部已经讨论过,目前我们决定这不是我们的问题,因为Spring正在调用此函数。我们将保持公共API的稳定性,因此无法更改此内容。虽然这可能会在未来发生变化,但目前不会更改。尽管人们可以关闭他们的节点,但只要他们在本地测试过应用程序,就应该能够注意到这一点。不幸的是,这相当烦人 :/ - Dan Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接