Tôi có một chuỗi chạy dưới tomcat tạo HttpUrlConnection và đọc nó thông qua BufferedInputStream.HttpURLKết nối bị khóa
Sau khi tìm nạp dữ liệu cho một số url, nó sẽ ngăn chặn. Tôi đã nhận được jstack của quá trình mà nói HttpUrlConnection bị khóa và BufferedInputStream cũng bị khóa.
"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)
Ai đó có thể trợ giúp ở đây. Cảm ơn
Từ nhật ký, có vẻ như nó đang đọc từ một số url xyz. Tôi đã thử với wget và có thể nhanh chóng nhận được phản hồi. Tôi không chắc chắn cho những gì lý do sẽ đọc() khối. Một điều nữa, tôi đã nhập 'java.net.HttpURLConnection' nhưng theo dõi ngăn xếp hiển thị một số gói khác. Bất kỳ đầu mối? – Nayn
Tôi sẽ đề nghị dùng thử HTTP Client của Apache: http://hc.apache.org/httpclient-3.x/ thay vì Sun's. Tôi không có kinh nghiệm với một trong hai, nhưng một số tìm kiếm nhanh chóng cho thấy rằng Apache là tốt hơn nhiều. – nojo
@Nayn: "gói khác" trong dấu vết ngăn xếp là triển khai nội bộ của Sun. – talonx