首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSCH通过SSH进行连接时的"TIMED_WAITING“线程状态

使用JSCH通过SSH进行连接时的"TIMED_WAITING“线程状态
EN

Stack Overflow用户
提问于 2017-07-18 22:48:45
回答 1查看 313关注 0票数 0

我正在尝试通过SSH与JSCH库连接到另一台服务器,在那里执行一些命令(用TZ检查当前日期)并返回结果。

代码如下所示:

代码语言:javascript
复制
private String processSSHCommand(String host, int port, String user, String password, String command) throws JSchException, IOException {
                Session session = new JSch().getSession(user, host, port);
                session.setPassword(password);
                Properties config = new Properties();
                config.put("StrictHostKeyChecking", "no");
                session.setConfig(config);
                session.connect();
                ChannelExec channel = ((ChannelExec) session.openChannel("exec"));
                channel.setCommand(command);
                channel.connect();
                String s = IOUtils.toString(channel.getInputStream(), "UTF-8");
                channel.disconnect();
                session.disconnect();
                return s;
            }

这是我的线程转储,当这段代码被卡住:

代码语言:javascript
复制
"[STUCK] ExecuteThread: '12' for queue: 'weblogic.kernel.Default (self-tuning)'" #35 daemon prio=1 os_prio=0 tid=0x00007fb3d4509000 nid=0xc87 in Object.wait() [0x00007fb3ec9d1000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
 at java.lang.Object.wait(Native Method)
 at java.io.PipedInputStream.read(PipedInputStream.java:326)
 - locked <0x00000007bcad22a0> (a com.jcraft.jsch.Channel$MyPipedInputStream)
 at java.io.PipedInputStream.read(PipedInputStream.java:377)
 - locked <0x00000007bcad22a0> (a com.jcraft.jsch.Channel$MyPipedInputStream)
 at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
 at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
 at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
 - locked <0x00000007bcad5168> (a java.io.InputStreamReader)
 at java.io.InputStreamReader.read(InputStreamReader.java:184)
 at java.io.Reader.read(Reader.java:140)
 at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1128)
 at org.apache.commons.io.IOUtils.copy(IOUtils.java:1104)
 at org.apache.commons.io.IOUtils.copy(IOUtils.java:1078)
 at org.apache.commons.io.IOUtils.toString(IOUtils.java:382)
 ...processSSHCommand(...)

有人能帮个忙吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-19 00:07:56

你的代码运行得很好,我刚刚在main方法中运行了它。因为我可以看到你在weblogic下运行它,所以它可能是一个原因。

我不太确定,但我建议你试试这个:

代码语言:javascript
复制
ChannelExec channel = ((ChannelExec) session.openChannel("exec"));
channel.setInputStream(null); // set to null
channel.setCommand(command);
channel.connect();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45170144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档