【问题标题】:Simulate/Generate a SocketTimeoutException in a servlet在 servlet 中模拟/生成 SocketTimeoutException
【发布时间】:2009-07-30 22:17:27
【问题描述】:


我正在做一个使用以下项目的网络项目:
- Java
- 码头
- Fitnesse tool
- ETC..

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


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

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

问题”:
我必须模拟服务器中可能发生的许多问题。为此,我编写了一个简单的 servlet 来模拟我的 WebServer。
但是对于这个用例,我需要在我的模拟器中模拟一个 SocketTimeoutException。我正在考虑让模拟器进入睡眠状态,但我认为这可能会导致客户端请求超时。


如果有人有任何想法或好的提示将非常高兴知道!

提前致谢

【问题讨论】:

    标签: java soap tdd agile


    【解决方案1】:

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

    HTH

    【讨论】:

    • 很好的提示,尤其是当您尝试从客户端的角度测试超时设置是否有效时。例如发送电子邮件并连接到 SMTP 服务器时
    【解决方案2】:

    我不太清楚你的问题。你可以试试吗:

    throw new SocketTimeoutException();

    【讨论】:

    • 我的 API 访问一个 WebServer,我正在为这个 WebServer 编写一个模拟器。如果我在模拟器中抛出异常,我的客户端将不会收到此异常。是 Web 服务的客户端。这个模拟器是在工具fitnesse中使用的。
    【解决方案3】:

    如果异常是基于套接字之间的“保持活动状态”(什么可能导致套接字超时),您可能必须在两台计算机之间建立套接字连接,然后移除它们之间的电缆(或连接到交换机)。发生“保持活动”超时,希望你会得到一个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多