Spring Boot 应用程序在没有 -Djava.net.preferIPv4Stack=true 和 -Djava.net.preferIPv4Addresses 参数的情况下监听 IPv6

标签 spring spring-boot jar ipv6 ipv4

我关于 Spring Boot jar 的问题。
在生产机器上运行 jar 时:

java -jar xyz.jar

它不响应我的请求。因为它正在监听 ipv6。

但是当我运行应用程序时
java -jar xyz.jar -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses

它响应了我的请求。

是生产机器的配置导致应用程序监听ipv6,还是有其他原因?

幸运的是
-Djava.net.preferIPv4Stack=true
-Djava.net.preferIPv4Addresses

参数解决了我的问题。但我很困惑!!
注意:Tomcat 用作嵌入式服务器。
Spring Boot 1.5.4 版本发布

最佳答案

这里https://docs.oracle.com/javase/8/docs/technotes/guides/net/ipv6_guide/index.html我读到“Java 网络堆栈首先检查底层操作系统是否支持 IPv6。如果支持 IPv6,它会尝试使用 IPv6 堆栈。”

要检查您的 Linux 机器是否支持 IPv6,只需运行“cat/proc/net/if_inet6”,如果您看到一些输出,则表示它已启用。

关于Spring Boot 应用程序在没有 -Djava.net.preferIPv4Stack=true 和 -Djava.net.preferIPv4Addresses 参数的情况下监听 IPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44718174/

相关文章:

java - 我应该使用@Transactional 对JdbcTemplate 进行简单查询吗?

java - Spring:JSP 未读取传递的 ModelMap?

java - 带有 MockMvcBuilders 的 SpringBootTest 独立设置没有加载我的 ControllerAdvice 尽管设置了它

异步方面的 java.lang.IllegalStateException : No thread-bound request found when using RequestContextHolder. currentRequestAttributes()

java - 将 HikariCP 阴影放入 jar 中将不起作用

spring - org.springframework.security.authentication.AuthenticationCredentialsNotFoundException : An Authentication object was not found in the SecurityContext

spring - Spring框架导入失败

java.time.format.DateTimeParseException : Text '2019-02-16 09:29:32.959' could not be parsed, 在索引 10 处找到未解析的文本

java - 使用 java 库和 Lucee 将表情符号转换为 html 十六进制

java - jackson JSON 映射 "NoClassDefFoundError: JsonPropertyDescription"