当前位置: 首页 > 知识库问答 >
问题:

当opc UA服务器重新启动时,不会创建eclipse milo会话

步联
2023-03-14

我在我们的应用程序中使用eclipse milo java OPCUA客户端SDK来实现OPC。我能够创建会话、订阅和监视。它工作正常,但当opc服务器重新启动时,我尝试删除上一个会话并创建一个具有相同参数的新会话,我得到以下异常

UaException:状态=错误超时,消息=等待确认超时

抛出错误的行是:

EndpointDescription[]endpoint=客户端。getEndpoints(endpointurl)。get();

在服务器端,我得到一个错误:

OPCUAServerEndPoint#_on_client_connection已达到最大连接数-拒绝连接

然而,当我尝试使用相同的参数再次创建会话时,它确实会被创建

共有1个答案

陈渊
2023-03-14

你不应该自己创建会话,因为这是由客户机为你处理的,你绝对不应该试图删除上一个会话。

您唯一需要做的就是将SubscriptionListener添加到OpcUaSubscriptionManager并处理onSubscriptionTransferFail回调。

收到此回调意味着客户端已重新连接,必须创建新会话,但服务器无法将其旧订阅传输到此会话。这种情况通常发生在重新连接花费的时间太长,订阅超时,或者导致服务器失去所有状态(例如重新启动)时。

我添加了一个有点复杂的集成测试,它证明了所有这些都确实有效,你可以在这里看到。

 类似资料:
  • 在每个服务器上创建x会话后,我有2个不同的tomcat服务器(不同的机器),当我重新启动两个服务器时,其中一个保留会话,而另一个没有, -知道为什么吗?-我想和两只雄猫保持通话 谢谢

  • 问题内容: 我有一个Express 4应用程序设置来进行会话。 当我提交表单时,它将user_id保存到req.session中。但是,当我重新启动服务器时,会话消失了。 为什么不持续?我是否缺少某些配置? 问题答案: express-session的默认会话存储是MemoryStore,顾名思义,该存储仅将会话存储在内存中。如果需要持久性,则有许多可用于Express的会话存储。一些例子: co

  • 问题内容: 我有使用Express和Connect中间件的功能齐全的用户注册/身份验证系统。 唯一的问题是,每次执行服务器重新启动时,会话都会中断。 https://github.com/remy/nodemon-并且nodemon每次检测到文件更改时都会重新启动node.js。 如何进行持续性会话? 问题答案: 就像您的代码告诉您正在使用MemoryStore一样。这是易失的,重启后会清除。我建

  • 问题内容: 我有一个Rails应用程序,我想在机器启动时自动启动服务器。现在,我进入目录,然后键入命令。如何配置机器以在引导时运行Rail服务器?我正在使用Ubuntu和Rails 3.0.0。 问题答案: 您可以为此使用cron作业。要添加cron作业,请使用命令。比您可以定义一个cron作业,该作业在启动时运行,然后使用重新启动。 所以你会有类似的东西:

  • 我只是尝试使用协议缓冲区为Go语言生成代码。但是无法使用原型命令生成服务。 上面是一个虚拟的原型文件,我试图将其转换为Go语言。但是无法生成正确的文件,因为在我的系统中,它无法将行识别为服务。 我正在windows系统上使用以下版本的protoc: 使用以下命令生成代码: \greet\greetpb\greet.proto--go_out=。 下面是由上述命令生成的go代码: 在以后的go代码中