如何在Tomcat中模拟connectionTimeout?

时间:2017-04-21 10:12:57

标签: java tomcat timeout httpconnection

根据我的理解,connectionTimeout是连接后第一个请求发送的时间。如果第一个请求的周期超过connectionTimeout,则会抛出错误。

我是对的吗?所以,我编写了以下代码片段,它不起作用。

也许我误解了一些概念。非常感谢。

HttpURLConnection conn = (HttpURLConnection) new URL("http://127.0.0.1:8080/MVN.EXAMPLE/hello/HelloServlet").openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("GET");
try {   
    conn.connect();
    Thread.sleep(65*1000L); // the default connectionTimedout is 20s.
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
}
catch (Exception e) {
    int aaa = 0; // for debug
    // If connectionTimeout is triggered, it will go here.
}
finally {
    int bbb = 0; // for debug
}

URL" http://127.0.0.1:8080/MVN.EXAMPLE/hello/HelloServle"是Tomcat中本地应用程序的路径。

2 个答案:

答案 0 :(得分:0)

替换此

conn.connect();
Thread.sleep(65*1000L);

用这个

  conn.setConnectTimeout(65 * 1000);
  conn.setReadTimeout(65 * 1000);
  conn.connect();

答案 1 :(得分:0)

我使用telnet来模拟tomcat-end上的connectionTimeout。

  1. 使用telnet 127.0.0.1 8080
  2. 等待connectionTimeout //默认为20秒
  3. Telnet将在20年代后被外国主持人关闭
  4. 重复步骤1
  5. 输入GET / XXXX,telnet将获得响应
  6. 因此,这可以显示telnet只连接到主机而不发送请求。因此,当达到connectionTimeout时,telnet客户端将关闭由tomecat触发 - 它将自动关闭客户端。