什么时候在 milo opc ua 客户端调用 onServiceFault?

问题描述

我有一个 milo opc ua 客户端,并使用 client.addFaultListener(this) 添加了一个故障侦听器,并且我已经覆盖了 onServiceFault 方法(以便它实现 ServiceFaultListener)。

当我关闭 opc ua 服务器时,我只收到来自 milo 的消息: [警告][org.eclipse.milo.opcua.sdk.cli] [4] Keep Alive failureCount=1 超过 failuresAllowed=0 但是我的错误监听器没有执行。

在什么情况下由milo执行onServiceFault监听器?

解决方法

当客户端实际收到来自服务器的 ServiceFault 响应时会调用它,这可能发生在多种情况下,其中之一是服务器不支持您调用的服务。

像您一样关闭服务器应该会在您添加到客户端的任何 SessionListener 上调用 onSessionInactive

,

我想我现在可以自己回答我的问题了:例如,当服务器连接丢失并且 milo 重新连接但订阅传输失败并且之后使用此无效订阅时,milo 将执行一个像这样的 ServiceFault 状态为 Bad_SubscriptionIdInvalid。

ServiceFault(responseHeader=ResponseHeader(timestamp=DateTime{utcTime=132556030188286769,javaDate=Wed Jan 20 08:56:58 CET 2021},requestHandle=116,serviceResult=StatusCode{name=Bad_SubscriptionIdInvalid,value=0x80280000,quality=bad},serviceDiagnostics=null,stringTable=[],additionalHeader=ExtensionObject{encoded=ByteString{bytes=null},encodingId=NodeId{ns=0,id=0}})) 

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...