我有一个java web模块,它通过对另一个服务器的http调用执行许多json。我刚刚告诉我们的java管理团队,我需要在json通过http调用时防止socketTimeouts和连接超时,因为当没有及时收到响应时,它会在服务器上留下挂起的线程。
结果我被要求将超时设置为45秒。
我是否可以对以下代码中设置套接字和http连接超时的最佳方法提出一些建议...
public static String readJsonFromUrl(String url) throws Exception{
String jsonText = null;
try {
InputStream is = null;
try {
is = new URL(url).openStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName(JsonConstants.DEFAULT_CHARSET)));
jsonText = readAll(rd);
} finally {
if (is!=null){
is.close();
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
throw new Exception(ErrorConstants.ERROR_SERVICE_MSG);
} catch (IOException e) {
e.printStackTrace();
throw new Exception(ErrorConstants.ERROR_SERVICE_MSG);
}
if (jsonText != null && jsonText.indexOf(JsonConstants.ERROR_MESSAGE) != -1){
throw new Exception(ErrorConstants.ERROR_SERVICE_MSG);
}
return jsonText;
}
提前致谢
我应该在上面提到过,我正在使用java 1.4.2,并且在该版本的java中,HttpUrlConnection上没有setTimeout和setReadTimeout。我一直在挖掘,但还没有找到一个关于如何做到这一点的好片段。如果有人能指出一个很好的例子,或者添加一些可能有用的代码片段,那就感激不尽了。
答案 0 :(得分:0)
请勿使用tmpArrayName = employeeName.slice(0);
tmpArraySal = employeeSal.slice(0);
。使用openStream()
,将结果转换为openConnection()
,然后调用相应的方法来设置所需的超时。然后致电HttpURLConnection
获取数据。
但是动机不正确。如果存在连接超时,则没有连接,因此服务器上根本没有线程。