2017-07-18 16 views
0

JSCHライブラリを使用してSSH経由で別のサーバーに接続しようとしています(そこにいくつかのコマンドを実行してTZで現在の日付を確認してください)。JSCHを使用してSSH経由で接続するときのスレッド状態

コードは次のようになります。このコードが貼付されたときに

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; 
      } 

私のスレッドダンプがあります:

"[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(...) 

誰もがこれを助けていただけますか?

+0

それを –

+0

'command'は何を共有してください!それは何をするためのものか? –

+0

Martin、コマンドは単純です - "date + '%:z'" –

答えて

0

あなたは完全に動作しています。私はちょうどmainメソッドで実行しました。私はそれが原因である可能性がありますので、あなたがweblogicの下でそれを実行することがわかります。

私は正確にはわからないが、私はあなたがこの一しようと示唆している:あなたは同期といくつかのメソッドまたはブロックを持っている場合は

ChannelExec channel = ((ChannelExec) session.openChannel("exec")); 
channel.setInputStream(null); // set to null 
channel.setCommand(command); 
channel.connect(); 
関連する問題