Thanks Peter but we're not using a URLConnection, nor are we
explicitly setting any timeouts, as you can see from the code.

On 12 February 2010 12:06, Peter Crowther <peter.crowt...@melandra.com> wrote:
> 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
>
>



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

Reply via email to