A swift Google for:
  java url openStream timeout
reveals:
  
http://stuffthathappens.com/blog/2007/09/10/urlopenstream-might-leave-you-hanging/
as its first hit.

In essence: the timeout is controlled by setTimeout on UrlConnection.

On 12 February 2010 11:59, Chris Mannion <chris.mann...@icasework.com> wrote:
> Hi all
>
> Hoping someone can shed some light on a little puzzle I have.  This
> may be more a Java programming problem than a Tomcat problem so
> apologies if that is the case but it's specific to a system running on
> Tomcat so I'm asking here too.  One of our servlets is opening a URL
> connection to hit an external URL, the external URL can sometimes take
> a while to respond and when that happens the URL connection throws a
> socket timeout exception (see the stack trace below).  What I can't
> work out is what determines how long the connection waits before it
> times-out, we don't set anything explicitly in our code and it doesn't
> seem to be related to the servlet timeout in the connector, does
> anyone know what determines the timeout length and how it can be
> changed?  The code is simply -
>
> public void outputUrl(OutputStream p_out, String p_url) {
>  try {
>          URL t_url = new URL(p_url);
>          InputStream t_inputStream = t_url.openStream();
>          // Read from the input stream, and write to the output stream
>          byte[] l_buffer = new byte[10]; // buffer holding bytes to
> be transferred
>          int l_nbytes = 0;  // Number of bytes read
>          while ((l_nbytes = t_inputStream.read(l_buffer)) != -1)
>             p_out.write(l_buffer,0,l_nbytes);
>          t_inputStream.close();
>          }
>  catch (Exception e)
>   {
>     nsglog.error(String.valueOf(e), e);
>   }
>  }
>
> The error trace is -
>
> java.net.SocketTimeoutException: Read timed out
>       at java.net.SocketInputStream.socketRead0(Native Method)
>       at java.net.SocketInputStream.read(SocketInputStream.java:129)
>       at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>       at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
>       at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
>       at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:659)
>       at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:604)
>       at 
> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:961)
>       at java.net.URL.openStream(URL.java:1007)
>       at ep.ext.outputUrl(ext.java:446)
>
> So it's the attempt to open the input stream on the URL that is timing
> out, what governs that timeout?
>
> --
> Chris Mannion
> iCasework and LocalAlert implementation team
> 0208 144 4416
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to