一个连接超时,其上的开发人员位于他的想法列表的底部。
日志友好:
[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()在连接超时降低到合理范围之前尝试打开连接,但nothing显示API我如何以不同的方式做到这一点。
有关尝试什么的建议?
答案 0 :(得分:2)
我会得到线程转储,看看完全它的位置。不要假设。然后你就会明白为什么它会卡在那里。如果您已经有线程转储,请发布堆栈跟踪。
答案 1 :(得分:1)
我最好的猜测是url.openConnection()尝试在连接超时降低到合理的范围之前打开连接,但API中没有任何内容告诉我我是如何做到这一点的。
我认为这是可能的情况。在尝试连接开始后设置连接超时不太可行,IMO。
有关尝试什么的建议?
您是否尝试在系统属性中设置“sun.net.client.defaultConnectTimeout”属性?记录here。
答案 2 :(得分:0)
我最好的猜测是 url.openConnection()正在尝试 在连接之前打开连接 超时被降低到什么程度 合理的。
没有。如果是这种情况,URLConnection.setConnectionTimeout()将完全没有意义,因为没有办法比你更早地调用它。
答案 3 :(得分:-3)
这可能是因为“最终”。我不确定你为什么要放在那里,但我认为删除最终应该有所帮助。