首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让JVM在独立的作用域中使用IPv4堆栈?

如何让JVM在独立的作用域中使用IPv4堆栈?
EN

Stack Overflow用户
提问于 2013-05-21 13:41:41
回答 1查看 1.3K关注 0票数 1

我有一个在JVM/Tomcat上运行的应用程序,它运行的机器都启用了IPv6堆栈。我正在尝试向另一台只支持IPv4的机器发出请求,而JVM总是更喜欢使用IPv6堆栈发出该请求(我使用Apache HttpClient类发出请求)。

我知道-Djava.net.preferIPv4Stack=true属性,但是由于我不会在这里讨论的原因,我不能在启动时传递它。我甚至不能以编程方式(在短时间内)这样设置它:

代码语言:javascript
复制
System.setProperty("java.net.preferIPv4Stack", "true");

...since这可能会影响运行在JVM/Tomcat实例上的其他线程(正如我从this question和其他人那里理解的那样)。

所以问题是,我如何让这个请求通过IPv4堆栈(这意味着实际使用IPv4接口,而不仅仅是连接到IPv4端点)?

我考虑过使用cURL (通过exec或通过libcurl绑定),因为curl根本不使用JVM。

还有其他想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-22 21:18:56

柔版提到这是有效的!

最终,我意识到真正的问题不是JVM会从IPv6接口发出请求,这是不可能的,因为代理只有一个as条目(正如Flexo指出的那样)。

真正的问题是代理URL中的一个拼写错误,这使得JVM无法解析代理主机;让我大吃一惊的是异常是从Inet6Address类抛出的(可能是因为JVM还不知道代理只有IPv4 )。

我修正了打字错误!现在,代理已被正确解析,并通过IPv4发出请求。谢谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16662896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档