如何证明Jetty 9 SelectChannelConnector超时有效?

时间:2013-08-15 09:36:48

标签: sockets jetty

我在Windows 7上使用Jetty 9.0.4和Java 1.7.0。

如何证明这些超时有效?理想情况下,我正在寻找一个集成单元测试,如果它们不起作用将会失败。

org.mortbay.jetty.nio.SelectChannelConnector connector = new SelectChannelConnector();
connector.setMaxIdleTime(10_000);
connector.setSoLingerTime(10_000);
connector.setLowResourceMaxIdleTime(10_000);

我尝试以下列方式连接到http端口,但它不会失败,只是每隔一分钟继续读取一个字节。我预计它会失败,因为最大空闲时间设置为10秒。

Socket socket = new Socket("localhost", port);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("GET / HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n".getBytes());
outputStream.flush();
InputStream content = socket.getInputStream();
char aChar;
int bytesToReceive = 1000;
while((aChar = (char) content.read()) != -1 && bytesToReceive-- > 0) {
    System.out.println("Read '" + aChar + "' and going to sleep for a minute.");
    Thread.sleep(60_000);
}

1 个答案:

答案 0 :(得分:2)

Jetty 9没有SelectChannelConnector,也没有org.mortbay包名...那是Jetty 6代码。

Jetty从Jetty 7开始迁移到Eclipse Foundation,自Jetty 6以来已有超过150个版本。

至于您的测试用例,请参阅此测试代码:

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java