Hi, I have few more doubts regarding this:
I am reading only the error stream but not the output stream ( for the channelExec) and still its working fine. So is it mandatory that I have to read both the streams every time? What about sftp in jsch? Because I think iam facing the same problem related to sftp. The file is properly transferred but the same reading method (which worked properly for exec channel) isn't working here!..what am I missing? Please advise. Regards, P.V.R.Kartik On Wed, Nov 17, 2010 at 1:32 PM, <[email protected]> wrote: > Hi, > > Thanks you very much. This solved my problem. I have written separate methods > for error and input streams and calling one after another. As you suggested > when I modified my code and joined them the control is coming back to jsch > after the command execution. Just one more doubt. I have to also use other > oracle commands such as imp. Do all the oracle commands write to err stream? > > Regards, > P.V.R.Kartik > > -----Original Message----- > From: Keith Alan Richardson [mailto:[email protected]] > Sent: Wednesday, November 17, 2010 4:13 PM > To: Kartik Pullabhotla v r (WT01 - GMT-Telecom Equipment) > Cc: [email protected] > Subject: Re: FW: [JSch-users] Oracle exp command with jsch > > Your code is reading only one input stream (in variable) . Based on later > emails you sent, I believe that is standard out. > > Oracle's exp command writes exclusively to stderr. You must read both > streams or your application will block. Below is some sample code. > (please note: we suspect a deadlock in our application when reading > large output of 17MB. The code below may contain that bug so use > as-is at your own risk) > > > InputStream in = channel.getInputStream(); > > channel.connect(); > > InputStream err_in = > channel.getExtInputStream(); > > byte[] tmp = new byte[1024]; > > while (true) { > > while (in.available() > 0) { > int i = in.read(tmp, 0, 1024); > if (i < 0) > break; > stdOut += new String(tmp, 0, > i); > } > > while (err_in.available() > 0) { > int i = err_in.read(tmp, 0, > 1024); > if (i < 0) > break; > stdErr += new String(tmp, 0, > i); > } > > if (channel.isClosed()) { > break; > } > > Thread.sleep(500); > > } > > > Thanks, > Keith > > On Tue, Nov 16, 2010 at 11:10 AM, <[email protected]> wrote: >> >> (Resending for the group).. >> >> Hi Alan, >> >> Thanks for the reply. >> >> Yes, I am reading both output and error channel. I have run the >> following commands in the server and both print fine, i.e., all the >> characters are printed. Moreover i could observe in the code that the >> input buffer has no content in it AND the channel is never closed. >> Please note my source code below which is just exactly as suggested in the >> example files. >> >> StringBuilder tmpBuf = new StringBuilder(); >> byte[] tmp = new byte[1024]; >> while (true) { >> while (in.available() > 0) { >> int i = in.read(tmp, 0, 1024); >> if (i < 0) >> break; >> String resp = new String(tmp, 0, i); >> tmpBuf.append(resp); >> } >> if (channel.isClosed()) { >> in.close(); >> break; >> } >> //for debug, if miss isClosed() >> if( !channel.isClosed() && channel.getExitStatus() == 0 ){ >> System.out.println("before close exit-status changed!" ); >> } >> } >> >> Here, the inputstream 'in', after few cycles, is returning no >> character (in.available < 0) and channel.isClosed() is never true. >> >> Please advise. >> >> Regards, >> P.V.R.Kartik >> ________________________________ >> From: Keith Alan Richardson [mailto:[email protected]] >> Sent: Tuesday, November 16, 2010 1:14 PM >> To: Kartik Pullabhotla v r (WT01 - GMT-Telecom Equipment) >> Cc: [email protected] >> Subject: Re: [JSch-users] Oracle exp command with jsch >> >> Are you reading the channel stdout and stderr? One or both buffers >> may fill up causing deadlock >> >> SQL*Plus may not produce enough output to fill the buffers but exp might. >> >> You can test if this is your problem by running the following commands : >> >> # print 1MB to stdout >> >> perl -e 'print "x"x(1*1024*1024)' >> >> # print 1MB to sterr >> >> perl -e 'print STDERR "x"x(1*1024*1024)' >> >> On 16 Nov 2010 09:00, <[email protected]> wrote: >> >> >> (Resending this since i haven't received any acknowlegement or the >> copy) >> >> >> Hi Team, >> >> We have a project here whose primary purpose is to call a script on a >> unix server from... >> >> --------------------------------------------------------------------- >> - >> -------- Beautiful is writing same markup. Internet Explorer 9 >> supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 >> & L3. >> Spend less time writing and rewriting code and more time creating >> great experiences on the web. Be a part of the beta today >> http://p.sf.net/sfu/msIE9-sfdev2dev >> _______________________________________________ >> JSch-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/jsch-users >> >> Please do not print this email unless it is absolutely necessary. >> >> The information contained in this electronic message and any >> attachments to this message are intended for the exclusive use of the >> addressee(s) and may contain proprietary, confidential or privileged >> information. If you are not the intended recipient, you should not >> disseminate, distribute or copy this e-mail. Please notify the sender >> immediately and destroy all copies of this message and any attachments. >> >> WARNING: Computer viruses can be transmitted via email. The recipient >> should check this email and any attachments for the presence of >> viruses. The company accepts no liability for any damage caused by >> any virus transmitted by this email. >> >> www.wipro.com > > Please do not print this email unless it is absolutely necessary. > > The information contained in this electronic message and any attachments to > this message are intended for the exclusive use of the addressee(s) and may > contain proprietary, confidential or privileged information. If you are not > the intended recipient, you should not disseminate, distribute or copy this > e-mail. Please notify the sender immediately and destroy all copies of this > message and any attachments. > > WARNING: Computer viruses can be transmitted via email. The recipient should > check this email and any attachments for the presence of viruses. The company > accepts no liability for any damage caused by any virus transmitted by this > email. > > www.wipro.com > ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ JSch-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jsch-users
