SocketChannel read() throws IOException

Hi!
During private SocketChannel channel;
private ByteBuffer inBuffer;
channel.read(inBuffer);an IOException (An established connection was aborted by the software in your host machine) was thrown. Does any one know the reason of this unpleasent event? I believe the channel is ok (just created)... maybe I try to write to fast to just created channel? Maybe I should wait for 3-5 seckonds?
Please help!!!

You already know the cause - you posted it.
"An established connection was aborted by the software in your host machine"
Basically, software (Winsock on Windows), has aborted the connection due to the lovely use of LSPs (Linked/Layered Service Providers) used by anti-virus (and viruses themselves) to control the network services on a computer.
McAfee VirusScan 8 and Norton AntiVirus 2004 are known to cause this, however, other firewall/anti-x programs can do this.

Similar Messages

  • SocketChannel.write() throws IOException instead of returning 0

    I would like your opinion.
    When a send buffer is full in the OS, should a channel's write()
    return 0, or throw an exception? If an exception, should it be the
    same exception (IOException) thrown when truly exceptional events
    happen (e.g, a connection drop)?
    On Win32, SocketChannel.write() internally calls WSASend(). When
    WSASend() returns WSAEWOULDBLOCK, write() throws IOException. I
    think it should return zero instead, or at least throw an exception
    that can be distinguished easily (by other than parsing the
    IOException.getMessage())
    Should I submit a bug?
    Thanks,
    Juan

    The java doc for write() says it should return zero. If you have a simple test case that demonstrates the behavior you describe and it is not already in the bug database, then yes. You should file the bug report.

  • Why does RTFEditorKit's Read throw IOException??

    Hey all,
    I'm getting IOException, "Too many close-groups in RTF Text" maybe 5 out of 100 times when I read an InputStream into a TextPane document using the RTFEditorKit:
    myTextPane.getEditorKit().read(in, document, 0);
    The rest of time it works fine. I'm not able to reproduce at will, but it does happen often if I'm reading a stream that has a lot of repeatable character sequences (imagine pasting the same odd string 50 times in a row).
    Can anyone shed some light--whether this is a known issue or if I'm making a common mistake? Either way, what can I do? :(
    Thanks!
    Jackie

    Well, I was wrong to think the problem was with the Read in isolation. My inputstream is created from a field in Access of binary data type (ole object). If I store the data as a String (using Access' Memo), then I have better luck. Alas, I lose ability to justify text and can't store as much data. But, it suits my purposes for now.

  • On Windows 7 HttpURLConnection.openConnection() throws IOException

    Hi Team,
    In our application we have a to create httpURLCOnnection (url.openConnection())which works fine on Windows XP but throws IOException on Windows7. Does anybody know which settings need to be enabled on windows 7 to resolve this issue?
    Any response would be appreciated. Thanks in Advance.

    Hello Team,
    I have a specific exception which I get when trying to open a url on Windows 7 with IIS authentication enabled. We get exception when trying to get response code of HTTP Connection
    java.io.IOException: Authentication failure
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    Same code works find on windows XP. Do I need to do any specific settings on Windows7 to work this?
    Thanks in Advance.

  • DOMparser throws IOException when encounters Hungarian Characters

    Hoi!
    I wrote a piece of code that extracts some
    information from an XML document into a vector of Java classes, using the oracle.xml.parser.v2.DOMParser.
    And it worked. Or seemed to work...
    But when I put some articles in the XML file
    in Hungarian, the parser threw IOException.
    If I remplace the Hungarian characters to
    English "equivalents" a -> a etc., it works.
    I don't know. If XML is made up of Unicode characters, what's the problem with it?
    (The hex code of a was E1 in my text editor,
    as I'm using Win NT :(. )
    can I modify the xml prolog somehow?
    I'd rather not write a conversion program
    from a text file to another.
    Any ideas?
    and here's the code:
    DOMParser theParser = new DOMParser();
    XMLStreamToParse = XMLes.class.getResourceAsStream(xmlDocPath);
    theParser.setValidationMode(false);
    try{
    theParser.parse( XMLStreamToParse );
    //this throws IOException
    null

    What are you using as your test client?The test client is WebStone 1.0. WebStone always downloads the whole response, and reports the size of the response in bytes. From this I can see that when the IO exception occurs, webstone is unable to read the whole response, as it reports a smaller size.
    So, I do not think the problem is that the client has prematurely aborted its download. WebStone doesn't work that way. I think something has gone awry on the server side, and this worries me.

  • Stream connection throws IOException

    i am using a stream connection for the midp 1.0. The client logs into a server using a StreamConnection and all this is cool.
    But the application waits at the DataInputStream.read and then thows the IOException.
    my code is something like this,,
    while(true)
    if ((i = dataInputStream.read()) == -1)
    // some logic here
    the dataInputStream.read() throws the exception after approximately 7 to 8 seconds.
    anyone has an idea as to whats going wrong? why is the connection not being maintained.
    Thankyou,
    Balaji.

    Thankyou shmoove. The code is here.
    The server is setup to send information every 3 seconds to the client (upon client request,, which is working fine). For your reference,, the same code works perfectly fine with a Series 60 (midp2.0) phone, and so does the server. except that i use a SocketConnection for the midp 2.0 phone. For the very reason that midp 1.0 does not support the SocketConnection, i have to use a StreamConnection instead. the dataInputSream is bound with the StreamConnection object.
    I think the StreamConnection is somehow not persistant ,, in the sense the connection is not maintained.
    Please tell me whats wrong,
    Thankyou,
    Balaji.
    public Alert alertConnBroken = new Alert("", "Due to weak wireless link, Connection to server lost. Please reconnect!!", null, AlertType.WARNING);
    public String readString()
         String str = new String();
         while(true)
              try
                   if((ch = (char) dataInputStream.read()) == -1)                   
                        display.setCurrent(alertConnBroken);
                        break;
                   else
                      str = str + ch;
              catch(InterruptedIOException iioe)
                   iioe.printStackTrace();
                   break;
              catch (IOException ioe)
                   ioe.printStackTrace();
                   break;
                catch(EOFException eofe)                     
                    eofe.printStackTrace();                                        
                 break;
             catch (Exception e)
                e.printStackTrace();
                 break;
         return str;     
         

  • Throws IOException

    What is a best way to write throwing IOException here?
    Can I write try-catch, and after "catch" throw it?
    Is this right?
    I have no idea how to do it with if-clause.
    /** Writes the given apartment data in the file. If the file already
    exists, the old contents are overwritten.
    Parameters:
    apartment - the apartment to be written in the file
    Throws:
    IOException - if other problems arose when handling the file (e.g. the
    file could not be written) */
            public Appartment writeAppartment(Appartment appartment)
                  throws IOException {
                 try {
                    writeStream = new FileOutputStream(filepath);
                    objectStream = new ObjectOutputStream(objectStream);
                    objectStream.writeObject(appartment);
                 } catch (Exception e) {
                   String message ="Writing to file "+filepath+ " failed.";
                   throw new IOException(message);
    }

    Since your method is defined as "throws IOException", why not just get
    rid of the whole try/catch block. Let the caller of writeAppartment
    catch it. You don't seem to be doing anything special with the
    exception when your throwing it, like throwing a custom one, so just
    let java throw it. Plus, what if there is a NullPointerException...it
    would be thrown as an IOException?I see, I haven't understood that when the method is defined as
    "throws IOException", it throws it "automatically".
    So I haven't to do anything.
    But when I call this "throws-method" I have to catch the Exception or
    throw it forward.
    Is that right???
    was meant to be:
    objectStream = new ObjectOutputStream(writeStream);jep, sorry there was an error in that line.

  • Log API: StreamHandler.flush() throws IOException ?

    For some network error reason, my logging stopped working and i noticed this exception in the console:
    java.util.logging.ErrorManager: 2
    java.io.IOException: The specified network name is no longer available
            at java.io.FileOutputStream.writeBytes(Native Method)
            at java.io.FileOutputStream.write(Unknown Source)
            at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)
            at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(Unknown Source)
            at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(Unknown Source)
            at sun.nio.cs.StreamEncoder.flush(Unknown Source)
            at java.io.OutputStreamWriter.flush(Unknown Source)
            at java.util.logging.StreamHandler.flush(Unknown Source)
            at de.icp.logging.RollingFileHandler.publish(Unknown Source)I looked into the javadoc of StreamHandler.flush() and can't find any documented Exception that is thrown. As IOException is not an unchecked exception, this seems to be a javadoc bug, right?
    My "RollingFileHandler extends StreamHandler and my publish() looks like this:
         * Overwrites super.
        public synchronized void publish(LogRecord record) {
            if (!isLoggable(record)) {
                return;
            //check if we need to rotate
            if (System.currentTimeMillis() >= nextCycle) { //next cycle?
                role();
            super.publish(record);
            flush(); //throws IOException ??????
        }//publish()

    Hm ... i think overwriting reportError() is useful:
         * Overwrites super.
         * Reopen log file in case of an error.
        protected void reportError(String msg, Exception ex, int code) {
            super.reportError(msg, ex, code); //standard behaviour of Handler
           //on logging error, try to reopen the logfile:
            openFile();
            LogRecord record = new LogRecord(Level.WARNING, "Log file re-opened due to error:");
            record.setThrown(ex);
            publish(record);
        }//reportError()

  • JarURL.openStream() throws *IOException: no entry name specified*

    <pre>
    I have some code (supplied below) which tries to read contents of a resource
    referred by a URL.
    public class URLTest {
    public static void main(String... args) throws Exception {
    URL u = new URL(args[0]);
    InputStream is = u.openStream();
    // more code goes here:
    If you create a jar file in /tmp/b.jar and run this program as shown below:
    (If your shell treats ! as a special char, then you need to use escape char \ before it)
    java pkg.URLTest <b>jar:file:/tmp/b.jar!/</b>
    it produces the following exception:
    Exception in thread "main" java.io.IOException: no entry name specified
    at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:131)
    at java.net.URL.openStream(URL.java:1007)
    at pkg.URLTest.main(URLTest.java:20)
    But, if you pass the argument as jar:file:/tmp/b.jar!/A.class then it opens a stream
    that points to A.class which is embedded inside b.jar.
    My question is, what is the motivation behind not allowing user to open a stream to
    jar:file:/tmp/b.jar!/ which according to the javadocs of JarURLConnection
    http://java.sun.com/j2se/1.5.0/docs/api/java/net/JarURLConnection.html
    represents a JAR File?
    Thanks,
    Sahoo
    </pre>

    I just also came across this. I don't know the motivation behind it. But it is certainly deliberate.
    This is the source code for JarURLConnection.getInputStream.
    public InputStream getInputStream() throws IOException {
         connect();
         InputStream result = null;
         if (entryName == null) {
              throw new IOException("no entry name specified");
         } else {
              if (jarEntry == null) {
                   throw new FileNotFoundException("JAR entry " + entryName +
                        " not found in " +
                        jarFile.getName());
              result = new JarURLInputStream (jarFile.getInputStream(jarEntry));
         return result;
    }So it will only let you get an InputStream to a file inside the Jar file, not the Jar file itself.
    If you want to do that, then rather than using InputStreams you want to use the JarURLConnection class. My example below shows you how to get at the JarFile and its contents, JarEntry objects,
    URL u = new URL("/tmp/b.jar!/");
    JarURLConnection juc = (JarURLConnection)u.openConnection();
    JarFile jf = juc.getJarFile();
    System.out.println("JarFile: " + jf.getName());
    Enumeration<JarEntry> entries = jf.entries();
    for(JarEntry je = entries.nextElement(); entries.hasMoreElements(); je = entries.nextElement())
         System.out.println("\tJarEntry: " + je.getName());
    }

  • How to decide ByteBuffer size created for SocketChannel.read(ByteBuffer)

    Hi,
    Is there any way by which we can know the size of data ready to be read at the SocketChannel?
    When the "SelectionKey" is discovered to be "isReadable()" I would like to create the ByteBuffer of the required size and use it for the SocketChannel.read(ByteBuffer) method.
    Right now I have to statically fix the ByteBuffer size to some safe maximum limit for this "read" method, which somehow is not looking efficient technique to me.
    Thanks in advance
    Amit

    Java doesn't tell you how much data is pending, but allocating the ByteBuffer 'statically' in advance is a better technique anyway. ByteBuffers are potentially expensive to create so you should allocate them just once per channel. The size is generally 8k or above depending on how many clients you expect to service at the same time and the amount of memory you can spare per client and in total.

  • Cpu usage raise to 100% in socketchannel read

    hello guys,
    i m developing one socket applicatoin in which multiple client are connected to one server socket channel..
    now in my application there is one main thread which runs continuesly and in which i m asking to one particular client for his action....
    now when i ask to client then after one another thread which read from the client socketchannel is started and continuously running until client not reply.
    this read thread raise my cpu usage to 100%.....
    so what to do.????
    overview of my code::::
    //first thread
    void run()
    askClient();
    //start receive reply thread here
    rrt = new RRT();
    rrt.start();
    //second thread run method
    void run()
    while(running)
    System.out.pritnln("Inside receive thread");
    while(Bytesread==socketchannel.read(buf) > 0)
    //if get reply stop this thread
    running = false;
    in this second thread until client not reply cpu usage raise to 100%
    I have try for sleep in second thread run method than also it is not able to stop raise in usage..
    what should i do ....
    plz help

    Your designs demands artificial blocking reads, so why not using blocking sockets anyway? After all, you've spawned a new thread just to read that, you might as well save yourself the trouble with selectors.
    On the other hands, you might want to do the right thing (TM) and switch to a non-blocking design. I side with ejp on this one, use the documentation and the web.

  • SetSoTimeout for blocking SocketChannel.read() doesn't work

    When I tried to perform reading in blocking mode with using NIO's SocketChannel.read() method with a desired timeout, the SocketChannel.socket().setSoTimeout() method that was called before SocketChannel().read() funtion, seemed not to work properly. The read() method blocked the thread for infinite time even if I set the timeout to any non-zero value (zero means according the manual infinite timeout).
    Here is the example code:
    SocketChannel iochan;
    ByteBuffer bb = new ByteBuffer.allocateDirect(1024);
    iochan = SocketChannel.open(new InetSocketAddress(some address, some port));
    iochan.socket().setSoTimeout(2000); //should wait max. 2 secs on next read
    iochan.read(bb); //read some data to the buffer; if none present within 2 seconds then exception should be thrown - but it never happens. The thread is blocked until some data comes or the connection is closed by the peer, for example.
    What is very interesting is that this code is OK:
    SocketChannel iochan;
    ByteBuffer bb = new ByteBuffer.allocateDirect(1024);
    iochan = SocketChannel.open(new InetSocketAddress(some address, some port));
    iochan.socket().setSoTimeout(2000); //should wait max. 2 secs on next read
    iochan.socket.getInputStream().read(); //read byte; if none present within 2 seconds then exception should be thrown - this works fine.
    As you see the same socket is used. Nonetheless, I would like to use SocketChannel methods (NIO). Can anyone help me? Why doesn't work timeouts for blocking SocketChannel methods(read(),...), whereas "classic" sockets methods are OK?
    I'm using W2K SP3, Java 1.4.1_01.

    I've run into a similar problem using DatagramSockets. Apparently socket timeouts aren't supported using the nio packages, but nowhere in the documentation is this mentioned. The following bug report gives more info:
    http://developer.java.sun.com/developer/bugParade/bugs/4614802.html
    Apparently this is not considered a bug. I do however hope this is fixed in JDK 1.5, when I understand more work is to be done on nio.
    Rob

  • Socket I/P stream's read fails to throw IOException when connection is lost

    Hi,
    Socket.getInputStream().readShort() blocks till it reads from the server. It throws an IOException if the connection is lost before calling the method. But it is not throwing an IOException if the connection is lost after blocking.
    That is....
    // If the connection is lost before calling, it is throwing an IOException.
    short s = mySocket.getInputStream().readShort();
    // But, while it is blocked and if I shutdown the server, it's never throwing
    // an IOException and it stays blocked.How should I get around this problem?
    Thank you!

    It's true; a timeout is really the best way.
    One approach I thought about using, where I was in control of the protocol, was to periodically send a "nop" type operation to the socket; a message that doesn't do anything. Obviously not all applications have this liberty, either because you aren't in control of the protocol, or because you want to keep your application single threaded. It's also kind of hackish, and not as good as the timeout mechanism in most respects.
    You also have to be a little careful about what you define as a "connection failure". If, for example, you set up a TCP/IP socket without a timeout, and then physically disconnect the ethernet cable, the connection will in fact stay up. If you come back an hour later and plug in the cable again, the connection will still be there and will pass traffic again.

  • Character Sets - socketchannel read error

    I have made an FTPserver which i have just noticed is having trouble when the file name being requested/send has non-ASCII characters in it such as '�'.
    Since i am using nio i thought it would just be an simple task of just changing the character set from "US-ASCII" to "UTF-8" or "UTF-16".
    but when i changed it to UTF-8 there was no change, that is i still recieve an error:
    java.nio.charset.MalformedInputException: Input length = 1
    java.nio.charset.CoderResult.throwException(CoderResult.java:260)
    java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:763)
    Worker.readCommand(Worker.java:282)
    Worker.handleClient(Worker.java:562)
    Worker.run(Worker.java:144)
    java.lang.Thread.run(Thread.java:536)
    And when i tried UTF-16 no input was ever detected by my server...
    This 'input length = 1' business... does this mean that there must be more than one byte in the recieved byte array or am i going off on a incorrect tangent?
    Any suggestions or theories would be listened to!
    Cheers
    (btw i will not be able to reply to this post for another 11 hrs)

    I can but it will not be of much use as it is more a logical error or a misunderstanding of how to use the character set.
    well here is the relevant code anyway:
    // readCommand: waits until a command is recieved from the client and then returns the command
           String readCommand(InputStream is, PrintStream ps) throws java.io.IOException
             int nread = 0, r = 0;
             String str="";
             Charset charset = Charset.forName("UTF-8");
             CharsetDecoder decoder = charset.newDecoder();
          // Direct byte buffer for reading
             ByteBuffer dbuf = ByteBuffer.allocateDirect(1024);
    //      outerloop:
             do
                dbuf.clear();
                boolean quit=false;
                String message="";
                int bytesRead=0;
    // while there is no input in the buffer            
                while (dbuf.position()==0)
    // read in any bytes that are waiting into the buffer
                   sc.configureBlocking(false);
                   bytesRead=sc.read(dbuf);
                   sc.configureBlocking(true);
    // wait for two milliseconds before trying to read again
                   try
                      wait(2);
                       catch (InterruptedException e)
    // if the client has not yet finished the connection negoiation see if the client has been connected for more than 30 seconds, if so disconnect the client
                   if (account==-1)
                      if (System.currentTimeMillis()>clientStartTime+30000)
                         quit=true;
                   else
    // if the thread has been told to quit the connection set the quit flag
                      if (exitThread)
                           message="421 Quitting...";
                           quit=true;
    // If there is a sessionlimit see if the connection has exceeded the limit, if so set the quit flag
                      if (staticSessionLimit[account]>0)
                         if (System.currentTimeMillis()>clientStartTime+staticSessionLimit[account])
                            message="421 Session Limit Exceeded... please re-connect in 30 seconds";
                            quit=true;
    // if there is an inactivity timout see if the client has not been active for more than the timeout, if so set the quit flag
                      if (staticInactivityTimeout[account]>0)
                         if (System.currentTimeMillis()>lastActiveTime+staticInactivityTimeout[account])
                            message="421 Inactivity Timeout Exceeded... closing connection";
                            quit=true;
    // if the quit flag is set return "QUIT" which tells the thread to close the connection and return to the pool
                   if (quit)
                      ps.print(message);
                      ps.write(EOL);
                      ps.flush();
                      return "QUIT";
                dbuf.flip();
                   CharBuffer cb=null;
    // if there are bytes in the buffer, add the data to the recieved command string (str)
                   if (bytesRead>=0)
                        cb = decoder.decode(dbuf);
                          str=str+cb.toString();
    // repeat while EOL is not detected
             } while (str.length()<2 || !str.substring(str.length()-2).equals("\r\n"));
             str=str.substring(0,str.length()-2);
             FTPServer.log("STRING: "+str);
             lastActiveTime=System.currentTimeMillis();
    // update the last action requested by the client in the governor
             governor.addAction(str,this);
             return str;
          }

  • WebLogic Server 6.1 SP 3 DocumentBuilder throws IOException: Stream closed

    Hi,
              I have a question about XML processing and error handling, and how the
              WebLogic container affects things.
              Here's what happens to us. We have a servlet parsing XML using DOM.
              The servlet has an InputStream with the content. It gets the default
              DocumentBuilderFactory
              (weblogic.xml.jaxp.RegistryDocumentBuilderFactory) and makes it
              validating. It asks for a DocumentBuilder. It gives the builder our
              own custom error handler to collect up all the SAX parse errors. It
              then tells the builder to parse the input stream. We would expect
              that any problems with the content would be reported as an error to
              our error handler, so that we can then report the errors to the user
              as part of the servlet response.
              However, certain malformed XML content causes the WebLogic parser to
              issue several error messages to System.out and throw an IOException
              with the message "Stream closed". No errors are recorded in our error
              handler. This happens on a variety of inputs, which all revolve
              around the root element start tag being malformed or entirely missing.
              We get this behavior with a totally empty stream, with a stream that
              has the <?xml> and <!DOCTYPE> headers but nothing else, with a stream
              that has the headers and then a malformed start tag like
              "<Submit_Contracts a="1"b="2"/>". I think the programmer would expect
              any of these inputs to cause the parser to simply report a fatal error
              and stop. Throwing an IOException makes it look like it's an error in
              the underlying stream, and clearly it's not. (Most of the test code I
              used actually pulled the XML from a ByteArrayInputStream.)
              Shouldn't WebLogic's parser handle these inputs differently? Throwing
              an IOException can't be correct, can it? Should the application
              instead be responsible for checking that the input has a well-formed
              start tag? In that case the application is doing the parsing that we
              want to rely on the parser to do! Should the application instead
              catch IOExceptions from the parser and report them to the user as
              input errors? In that case the application can potentially swallow
              and ignore harmful system errors.
              The messages on System.out are all along the lines of:
              "<Oct 17, 2002 5:38:03 PM EDT> <Error> <XML> <Failed to open XML
              document. Failed to retrieve PUBLIC id or SYSTEM id from the document.
              Decrease the number of char between the beginning of the document and
              its root element.>
              <Oct 17, 2002 5:38:03 PM EDT> <Error> <XML> <Failed to open XML
              document. Failed to retrieve PUBLIC id. Stream closed>
              <Oct 17, 2002 5:38:03 PM EDT> <Error> <XML> <Failed to parse given XML
              document. Failed to retrieve PUBLIC id. The root element is required
              in a well-formed document.>
              <Oct 17, 2002 5:38:03 PM EDT> <Error> <XML> <Failed to parse given XML
              document. Failed to retrieve SYSTEM id. The root element is required
              in a well-formed document.>
              <Oct 17, 2002 5:38:03 PM EDT> <Error> <XML> <Failed to open XML
              document. Failed to retrieve root tag. Stream closed>
              <Oct 17, 2002 5:38:03 PM EDT> <Error> <XML> <Could not instantiate
              factory class specified in the Server console. Invalid parameters: at
              least one of publicId,systemId, rootTag must be non-null>
              The IOException looks like:
              "java.io.IOException: Stream closed
              at java.io.BufferedInputStream.ensureOpen(BufferedInputStream.java:118)
              at java.io.BufferedInputStream.read(BufferedInputStream.java:268)
              at weblogic.apache.xerces.utils.ChunkyByteArray.fill(ChunkyByteArray.java:230)
              at weblogic.apache.xerces.utils.ChunkyByteArray.<init>(ChunkyByteArray.java:106)
              at weblogic.apache.xerces.readers.DefaultReaderFactory.createReader(DefaultReaderFactory.java:153)
              at weblogic.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:499)
              at weblogic.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:318)
              at weblogic.apache.xerces.framework.XMLParser.parse(XMLParser.java:974)
              at weblogic.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:183)
              at weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:140)
              at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:86)
              at com.isone.sms.participant.contracts.web.WebLogicParserContainerTest.testWebLogicParserTanksOnEmptyStream(WebLogicParserContainerTest.java:448)
              at java.lang.reflect.Method.invoke(Native Method)
              at junit.framework.TestCase.runTest(TestCase.java:166)
              at junit.framework.TestCase.runBare(TestCase.java:140)
              at junit.framework.TestResult$1.protect(TestResult.java:106)
              at junit.framework.TestResult.runProtected(TestResult.java:124)
              at junit.framework.TestResult.run(TestResult.java:109)
              at junit.framework.TestCase.run(TestCase.java:131)
              at junit.framework.TestSuite.runTest(TestSuite.java:173)
              at junit.framework.TestSuite.run(TestSuite.java:168)
              at com.isone.sms.participant.contracts.web.ContractTestServlet.doPost(ContractTestServlet.java:23)
              at com.isone.sms.participant.contracts.web.ContractTestServlet.doGet(ContractTestServlet.java:16)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
              at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2546)
              at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2260)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)"
              Judging from the IOException, it looks as though WebLogic's wrapper
              parser, RegistryDocumentBuilder, successfully picked a real parser to
              do its work and is passing off the input to be parsed there, even
              though the input's already closed. Perhaps the
              RegistryDocumentBuilder silently screwed up the stream while trying to
              figure out what parser to use, but didn't take that into account
              before attempting to pass it off for parsing. Perhaps the error
              messages on System.out account for when RegistryDocumentBuilder is
              screwing up the stream.
              But if RegistryDocumentBuilder discovers that the stream can't be
              parsed, why can't it simply report a fatal error and stop before
              starting the real parser?
              Mainly I wanted to put this experience up here on a newsgroup because
              I was so surprised that nobody else had reported similar problems. It
              makes me doubt whether our applications are handling the XML parsing
              correctly. But I can't see any other way that makes sense. Please
              let me know what you think!
              Thanks,
              Jim
              

    Hi,
    I got this error when i used JRUN as plugin server through
    Ineternet Information Server. but it was working fine when used it
    as standalone server.
    The reason was beacuase, the inputstream was getting closed . when i removed it, it started working.
    (To be frank , the Inputstream was closed by XML DOM PARSER , which is third party component.)
    and believe that your case is also the same ....
    If you have doubt on that then see that configuration for proxies under your webservers config files
    best of luck
    LOkesh T.C

Maybe you are looking for