在servlet中模拟/生成SocketTimeoutException

时间:2009-07-30 22:17:28

标签: java soap tdd agile


我正在使用的网络项目:
  - 爪哇   - 码头
  - Fitnesse tool
  - 等..

我很难模拟/生成SocketTimeoutException,更多信息如下:

<小时/> 用例简化:
我编写了一个API来调用主机( WebServer )。 在源代码中,如果我收到RemoteException并且是 SocketTimeoutException ,我需要在其他主机中重试。
一切都很好!

我们如何测试:
是一个TDD项目,所以我们有一堆UT。对于“真正的”测试,我们使用上面提到的工具。 (FitNesse的)

'问题':
我必须模拟服务器中可能出现的许多问题。为此我写了一个模拟我的WebServer的简单servlet 但对于这个用例,我需要在我的模拟器中模拟SocketTimeoutException。我想在模拟器中睡一觉,但我认为这可能导致客户端请求超时。

<小时/> 如果有人有任何想法或一个好的提示将非常好知道!

提前致谢

3 个答案:

答案 0 :(得分:2)

我对你的问题不太清楚。你能尝试一下:

throw new SocketTimeoutException();

答案 1 :(得分:2)

以编程方式将套接字读取超时设置为1毫秒,您将始终获得java.net.SocketTimeoutException。

HTH

答案 2 :(得分:0)

如果异常是基于套接字之间的“保持活动”(可能导致套接字超时的原因),则可能必须跨两台计算机建立套接字连接,然后移除它们之间的电缆(或连接到交换机)。发生“保持活动”超时,希望你会得到一个SocketTimeoutException。

根据“保持活动”的设置(您可能可以通过套接字选项设置此项),可能需要几分钟到几小时(NT大约需要5小时才能保持活动超时,但它是可以选择的在注册表中。)

如果这没有给出预期的异常,我不确定导致超时需要什么条件。

可能会查看这些链接,看看它们是否有任何帮助。

http://www.velocityreviews.com/forums/t363525-sockettimeoutexception-read-timed-out.html

http://www.javakb.com/Uwe/Forum.aspx/java-programmer/29249/SocketTimeoutException-Read-timed-out