Tengo un subproceso ejecutándose bajo tomcat que crea un HttpUrlConnection y lo lee a través de BufferedInputStream.HttpURLConnection bloqueado
Después de obtener datos para algunas direcciones URL, se detiene. Obtuve el jstack del proceso que dice que HttpUrlConnection está bloqueado y BufferedInputStream también está bloqueado.
"http-8080-1" daemon prio=10 tid=0x08683400 nid=0x79c9 runnable [0x8f618000]
java.lang.Thread.State: RUNNABLE
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:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
- locked <0x956ef8c0> (a java.io.BufferedInputStream)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072)
- locked <0x956ef910> (a sun.net.www.protocol.http.HttpURLConnection)
Podría alguien ayudar aquí. Gracias
Desde el registro parece que está leyendo desde alguna url xyz. Intenté con wget y pude obtener la respuesta rápidamente. No estoy seguro de la razón por la cual el bloque de lectura(). Una cosa más, importé 'java.net.HttpURLConnection' pero el seguimiento de pila muestra algún otro paquete. ¿Cualquier pista? – Nayn
Sugiero probar el cliente HTTP de Apache: http://hc.apache.org/httpclient-3.x/ en lugar de Sun. No tengo experiencia con ninguno de ellos, pero una búsqueda rápida sugiere que Apache es mucho mejor. – nojo
@Nayn: El "otro paquete" en el seguimiento de la pila es la implementación interna de Sun. – talonx