在 J2SSH 中断开 NETCONF 会话时线程被阻塞

Thread blocked while disconnect NETCONF session in J2SSH

我已经使用 J2ssh 库 (0.2.7) 在我的应用程序中建立 NETCONF 连接。在配置文件监视时,我注意到很少有线程在 j2ssh 会话的 disconnect() 中被阻塞。这不是一个始终如一的问题,它有时会发生。

我在下面给出了堆栈跟踪。

Thread-116 (HornetQ-client-global-threads-1530142454) - priority:10 - threadId:0x00007f7e34065000 - nativeId:0x75aa - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at com.sshtools.j2ssh.transport.TransportProtocolCommon.sendMessage(Unknown Source)
- waiting to lock <0x0000000600164f20> (a com.sshtools.j2ssh.transport.TransportProtocolClient)
at com.sshtools.j2ssh.transport.TransportProtocolCommon.sendDisconnect(Unknown Source)
at com.sshtools.j2ssh.transport.TransportProtocolCommon.disconnect(Unknown Source)
at com.sshtools.j2ssh.SshClient.disconnect(Unknown Source)
at com.test.server.protocol.communication.MyNetconfSession.close(MyNetconfSession.java:106)

您使用的 SSH 库已经有 10 年没有维护了。如果这是一个问题,它将永远不会被修复。

出于安全原因,您应该在 https://github.com/sshtools/j2ssh-maverick

升级到替换库

新版本中可能不存在该问题,但至少如果存在问题您可以报告问题,因为该项目仍处于活动状态。