Corda检查节点在服务内部是否处于排放模式

Corda检查节点在服务内部是否处于排放模式,corda,Corda,假设我有一个Corda服务: @CordaService class MyService(serviceHub: AppServiceHub) : SingletonSerializeAsToken() 有没有办法检查我的节点在此服务中是否处于排放模式? 我试图在AppServiceHub实例中找到此信息,但未能找到。 我发现还有一个类ServiceHubInternal,它具有nodeProperties.flowsDrainingMode.isEnabled(),这正是我需要的。但我不知道

假设我有一个Corda服务:

@CordaService
class MyService(serviceHub: AppServiceHub) : SingletonSerializeAsToken()
有没有办法检查我的节点在此服务中是否处于排放模式? 我试图在
AppServiceHub
实例中找到此信息,但未能找到。 我发现还有一个类
ServiceHubInternal
,它具有
nodeProperties.flowsDrainingMode.isEnabled()
,这正是我需要的。但我不知道如何在Corda服务中获得
ServiceHubInternal
的实例

即使我尝试了一个建议的解决方案,将
corda节点添加为依赖项,并尝试强制转换
ServiceHubInternal sHI=(ServiceHubInternal)getServiceHub()
I get
ClassCastException-net.corda.node.internal.AbstractNode$AppServiceHubImpl不能强制转换为net.corda.node.services.api.ServiceHubInternal

更新

有趣的是,当我在流本身内部执行相同的操作时,它会工作,因此
serviceHub
inside
FlowLogic
中的
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实例?我将尝试创建一个全新的服务并尝试它