我有一个在 JVM/Tomcat 上运行的应用程序,并且它运行的机器都启用了 IPv6 堆栈。我正在尝试向另一台仅支持 IPv4 的机器发出请求,而 JVM 将始终更喜欢 IPv6 堆栈来发出此请求(我正在使用 ApacheHttpClient
类发出请求)。
我知道该-Djava.net.preferIPv4Stack=true
属性,但由于我不会在这里讨论的原因,当 JVM 启动时我无法通过它。我什至不能像这样以编程方式(在短时间内)设置它:
System.setProperty("java.net.preferIPv4Stack", "true");
...因为这可能会影响在 JVM/Tomcat 实例上运行的其他线程(正如我从这个问题和其他问题中了解到的那样)。
所以问题是,我如何让这个单个请求通过 IPv4 堆栈(意味着实际使用 IPv4 接口,而不仅仅是连接到 IPv4 端点)?
我考虑过使用 cURL(通过 exec 或通过libcurl绑定),因为 curl 根本不使用 JVM。
还有其他想法吗?