user1934199
user1934199

Reputation: 27

what causes SocketTimeoutException to be raised

My requirement is to record users voice and save it on the server (multiple users simultaneously). Code is :

    in = (InputStream) request.getInputStream();                         
    fos = new FileOutputStream(f1);
    int read = 0;
    while ((read = in.read()) != -1) {
        fos.write(read);
    }
    fos.close();
    in.close();

and I am getting the following exception when trying to record voices for multiple users at a time:

 java.net.SocketTimeoutException
    at org.apache.coyote.http11.InternalAprInputBuffer.fill(InternalAprInputBuffer.java:796)
    at org.apache.coyote.http11.InternalAprInputBuffer$SocketInputBuffer.doRead(InternalAprInputBuffer.java:830)
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116)
    at org.apache.coyote.http11.InternalAprInputBuffer.doRead(InternalAprInputBuffer.java:738)
    at org.apache.coyote.Request.doRead(Request.java:427)
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:304)
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:386)
    at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:317)
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
    at CommonPackage.Upload.processRequest(Upload.java:78)
    at CommonPackage.Upload.doPost(Upload.java:115)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
    at java.lang.Thread.run(Thread.java:619)

This does not give me any exception with a single user.

Upvotes: 2

Views: 4471

Answers (1)

Lefteris Laskaridis
Lefteris Laskaridis

Reputation: 2322

Most likely you get this exception because you are trying to read data from the request but it exceeds the default timeout value.

In tomcat the default value is 60 seconds. See the follwing guide to learn how to adjust you connector's connection timeout: http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

Upvotes: 1

Related Questions