[英]Help with java.net.URLConnection timeout?
Connection正在超时,而开发人员则在其想法列表的底部。
日志友好:
[6/24/10 6:32:34:032 EDT] 0000000d ThreadMonitor W WSVR0605W: Thread "WebContainer : 136" (0000c53e) has been active for 719542 milliseconds and may be hung. There is/are 45 thread(s) in total in the server that may be hung.
代码如下:
try {
final URLConnection connection = url.openConnection();
connection.setConnectTimeout(CONNECT_TIME_SECONDS * 1000);
connection.setReadTimeout(READ_TIME_SECONDS * 1000);
is = connection.getInputStream();
document = builder.parse(is);
} catch (SAXException e) {
log.error(e);
throw new PageContentException(e);
} finally {
if (is != null) {
is.close();
}
}
我最好的猜测是url.openConnection()试图在将连接超时降低到合理水平之前尝试打开连接,但是API中没有任何内容显示出我将如何做不同的事情。
关于尝试什么的建议?
我会得到线程转储,看看它确切地卡在了哪里。 不要假设 然后,您可以了解为什么它被卡在那里。 如果您已经有线程转储,请发布堆栈跟踪。
我最好的猜测是url.openConnection()试图在将连接超时降低到合理水平之前尝试打开连接,但是API中没有任何内容显示出我将如何做不同的事情。
我认为这是可能的情况。 IMO,尝试开始连接后设置连接超时不太可能起作用。
关于尝试什么的建议?
您是否尝试过在系统属性中设置“ sun.net.client.defaultConnectTimeout”属性? 它记录在这里 。
我最好的猜测是url.openConnection()在尝试将连接超时降低到合理水平之前尝试打开连接。
否。如果是这种情况,URLConnection.setConnectionTimeout()将完全没有意义,因为没有比您更早调用它的方法。
可能是因为“最终”。 我不确定您为什么要加入其中,但我认为删除final应该会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.