【问题标题】:OPC client issueOPC 客户端问题
【发布时间】:2016-05-19 11:29:58
【问题描述】:

我在 OPC 客户端代码中收到以下错误。 我启动我的客户端 - 关闭它 - 再次启动它以查看以下错误。 很明显,之前运行的某些东西导致了它。但我无法弄清楚它是什么。

当我比较第一次运行的 jstack 并关闭时。我没有看到任何来自 opc 的正在运行的线程。

有人看过这个问题吗?或者 有没有其他方法可以调试问题?

2016-05-19 16:35:53,564 WARN  [netty-event-loop-0] io.netty.channel.ChannelInitializer - Failed to initialize a channel. Closing: [id: 0xe25cac5b] java.lang.ExceptionInInitializerError
        at com.digitalpetri.opcua.stack.client.UaTcpStackClient$1.initChannel(UaTcpStackClient.java:340)
        at com.digitalpetri.opcua.stack.client.UaTcpStackClient$1.initChannel(UaTcpStackClient.java:337)
        at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:69)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRegistered(AbstractChannelHandlerContext.java:133)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRegistered(AbstractChannelHandlerContext.java:119)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:733)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:449)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.java:377)
        at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:423)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
        at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: 'awaiting-handshake' is already in use
        at io.netty.util.UniqueName.<init>(UniqueName.java:53)
        at io.netty.util.AttributeKey.<init>(AttributeKey.java:47)
        at io.netty.util.AttributeKey.valueOf(AttributeKey.java:39)
        at com.digitalpetri.opcua.stack.client.handlers.UaTcpClientAcknowledgeHandler.<clinit>(UaTcpClientAcknowledgeHandler.java:44)
        ... 13 more

【问题讨论】:

  • 这是什么版本的库?
  • 1.0.1 @KevinHerron

标签: java handshake opc


【解决方案1】:

看起来您可能遇到了某种 ClassLoader 问题 - UaTcpAcknowledgeHandler 的静态最终字段以某种方式被定义了两次。

当你“关闭”你的客户时究竟会发生什么?

【讨论】:

  • 当我关闭客户端时,它关闭得很好。我的意思是没有挥之不去的线程或任何例外。
  • JVM 是否关闭?也可能值得将库升级到最新版本。我已经看到客户端 SDK 在其他应用程序中使用它干净地关闭,所以你在这里加载和卸载它的方式有问题。
  • 我有一个驱动程序。所以 JVM 没有关闭。我有 Java 8。最新的 OPC 库。你是对的,如果我关闭 JVM 并重新启动它,这个问题就不会出现,因为这是一个干净的开始。但就我而言,这是不可能的,我必须让 JVM 运行。
  • 最新的是1.1.1。如果升级后无法正常工作,您必须详细了解关闭过程。
  • 我已升级到最新版本。我想我需要关闭一些 api,这反过来会取消等待握手的标志。 github.com/digitalpetri/opc-ua-stack/blob/master/stack-client/…
猜你喜欢
  • 2020-07-24
  • 2013-08-05
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2020-11-16
  • 2012-07-19
相关资源
最近更新 更多