本地JVM无法向0.0.0.0发起HTTP请求访问本地Confluent Schema Registry
问题根因
- 从你的报错日志中可看到
ProxySelector Request for http://0.0.0.0:28081/subjects/audit.AdAuditKey/versions记录,说明你的本地JVM配置了全局HTTP/HTTPS代理。Java进程发起请求时,默认会将0.0.0.0的请求转发到代理服务器,代理服务器无法解析本地服务地址,最终导致连接超时。而Postman默认未启用全局代理或单独配置了本地地址不代理规则,因此可以正常访问。 - 次要可能为IPv4/IPv6优先级问题:JDK 11默认会优先尝试IPv6连接,如果你的本地Schema Registry服务仅绑定了IPv4的0.0.0.0地址,JVM尝试通过IPv6地址访问就会触发超时,Postman默认优先走IPv4协议因此不受影响。
- 0.0.0.0本质是服务端的监听地址,并非标准的客户端访问目标地址,部分操作系统对0.0.0.0作为访问目标的处理逻辑存在兼容性问题,也可能导致连接异常。
解决方案
- 调整JVM代理规则:检查测试启动参数,确认是否配置了
-Dhttp.proxyHost、-Dhttps.proxyHost类代理参数,如有配置,需要将本地地址加入不代理列表,示例参数如下:Windows系统:
-Dhttp.nonProxyHosts="localhost|127.0.0.1|0.0.0.0"
Linux/macOS系统:-Dhttp.nonProxyHosts="localhost:127.0.0.1:0.0.0.0" - 强制JVM优先使用IPv4协议:给测试启动参数添加
-Djava.net.preferIPv4Stack=true,避免IPv6优先级导致的连接异常。 - 替换访问地址:将代码中访问Schema Registry的地址从
http://0.0.0.0:28081改为http://127.0.0.1:28081或http://localhost:28081,使用标准环回地址规避兼容性问题。
内容的提问来源于stack exchange,提问作者Harold L. Brown
相关产品推荐
相关产品推荐

