![](/img/trans.png)
[英]Reading a property before initialization of Spring Boot Application
[英]Spring Boot Application SSL property configuration: getKeyStorePassword before setKeyStorePassword
在尝试使用 spring boot 和 tomcat 配置 HTTPS/SSL 功能时,我开始看到此错误:
Caused by: java.lang.IllegalArgumentException: Invalid keystore format
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:116)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:87)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:225)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018)
... 22 common frames omitted
进一步挖掘,我看到了填充类SSL.java
的顺序( SSL.java
是用于配置的基本 POJO)。 访问 POJO 以获取值的顺序令人震惊。 我在“set”调用之前看到了“get”调用(特别是setKeyStorePassword
之前的getKeyStorePassword
)。 这不可能是好事!
这似乎是一个非常奇怪的弹簧错误,它与自己竞争以设置和获取值。 在这种情况下,即使正确的值最终就位,SSL 配置也会失败,因为它们在设置之前已被访问。 有人可以强调为什么会出现这种情况以及潜在的解决方法吗?
我们使用的是 Spring 1.5.12,可以确认所有配置都是正确的。
奇怪的是,这似乎是 POM/Maven 问题。
通过将我们的资源过滤设置为 false,应用程序开始以正确的顺序设置其所有变量。
<resource>
<directory>src/main/java/resources</directory>
<filtering>false</filtering>
</resource>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.