Corda检查节点在服务内部是否处于排放模式
假设我有一个Corda服务:Corda检查节点在服务内部是否处于排放模式,corda,Corda,假设我有一个Corda服务: @CordaService class MyService(serviceHub: AppServiceHub) : SingletonSerializeAsToken() 有没有办法检查我的节点在此服务中是否处于排放模式? 我试图在AppServiceHub实例中找到此信息,但未能找到。 我发现还有一个类ServiceHubInternal,它具有nodeProperties.flowsDrainingMode.isEnabled(),这正是我需要的。但我不知道
@CordaService
class MyService(serviceHub: AppServiceHub) : SingletonSerializeAsToken()
有没有办法检查我的节点在此服务中是否处于排放模式?
我试图在AppServiceHub
实例中找到此信息,但未能找到。
我发现还有一个类ServiceHubInternal
,它具有nodeProperties.flowsDrainingMode.isEnabled()
,这正是我需要的。但我不知道如何在Corda服务中获得ServiceHubInternal
的实例
即使我尝试了一个建议的解决方案,将corda节点添加为依赖项,并尝试强制转换ServiceHubInternal sHI=(ServiceHubInternal)getServiceHub()
I getClassCastException-net.corda.node.internal.AbstractNode$AppServiceHubImpl不能强制转换为net.corda.node.services.api.ServiceHubInternal
更新
有趣的是,当我在流本身内部执行相同的操作时,它会工作,因此serviceHub
insideFlowLogic
中的ServiceHubInternal
可以转换为CordaService
中的一个。这是它应该工作的方式吗?在CordaService中获得ServiceHubInternal
实例是否有解决方法
有人能帮我吗?您需要corda节点
依赖项才能访问ServiceHubInternal
将以下内容添加到依赖项部分的build.gradle文件中:
cordaCompile "$corda_release_group:corda-node:$corda_release_version"
您现在应该能够访问ServiceHubInternal并检查排水模式,如下所示:
ServiceHubInternal sHI = (ServiceHubInternal) getServiceHub();
sHI.getNodeProperties().getFlowsDrainingMode().isEnabled();
谢谢,但将corda节点作为依赖项并不能解决问题,我继续得到“ClassCastException-net.corda.node.internal.AbstractNode$AppServiceHubImpl不能强制转换为net.corda.node.services.api.ServiceHubInternal”,这很奇怪,我能够在流中使用它,没有任何问题。我记得你提到过在slack上使用Braid,这可能与此有关。是的,我使用了它,但是Braid如何更改我在服务中获得的serviceHub实例?我将尝试创建一个全新的服务并尝试它