【问题标题】:How to temporarily disable the JVM network connection如何临时禁用 JVM 网络连接
【发布时间】:2014-07-23 18:14:01
【问题描述】:

我需要测试当互联网连接断开时某个方法是否仍然可以正常工作。

此测试可以在 Linux、Windows 甚至 Jenkins 上的 VM 上运行,因此我认为特定于操作系统的解决方案并不是最好的方法。我也觉得修改安全策略文件不太理想。

理想的执行流程如下所示:

disableNetwork()
testMethod()
enableNetwork()

【问题讨论】:

  • 没有要禁用的“JVM 网络连接”。拉电缆。
  • 对不起,我认为我的问题已经足够清楚了。
  • 您需要在操作系统级别禁用网络适配器。
  • @JimGarrison 我在这里的旧答案中看到了这一点,但我希望现在可以使用另一种解决方案。感谢您的回复。

标签: java linux networking


【解决方案1】:

正如在此处的其他答案中所说,没有 Java 原生方式可以做到这一点。因此需要一个操作系统解决方案。这就是我为 Linux 所做的:

public void pullTheCable() {
    Runtime.getRuntime().exec("sudo ifconfig eth0 down");
}

这将禁用您的网络适配器。 (用相应的适配器替换“eth0”)。这将再次提出:

public void pushTheCable() {
    Runtime.getRuntime().exec("sudo ifconfig eth0 up");
}

您还需要编辑文件 /etc/sudoers 以授予用户执行 sudo 命令而不要求输入密码的权限。更多信息在这里:

how do you make sudo save the password?

一旦我有了 Windows 解决方案,我就会更新这个答案。

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多