【问题标题】:How to load spring config xml ${ } values from spring boot application properties如何从 Spring Boot 应用程序属性加载 Spring config xml ${} 值
【发布时间】:2018-06-25 16:29:23
【问题描述】:

Camel Spring Boot 应用程序版本 2.20.1

如何在启动时将 application.properties 值加载到 spring config xml 参数?

例如:几个参数定义如下:-

eas.ssl.key-store-type = JKS
eas.ssl.key-store-password = *****
eas.ssl.key-store = filelocation

现在启动时同样需要在 Spring Config XML 中配置如下:

<sec:keyStore type="${eas.ssl.key-store-type}" password="${eas.ssl.key-store-password}" file="${eas.ssl.key-store}" />

在日志中,我可以看到应用程序属性中的属性按预期检测到

PropertySourcesPropertyResolver  : Found key 'eas.ssl.key-store-password' 

但是,看起来键上的键并未作为值应用于配置 xml。 错误日志指出:-

org.apache.cxf.transport.https.SSLUtils  : The key store password has not
been set via a system property or through configuration, reading data from 
the keystore will fail.

【问题讨论】:

  • &lt;sec: 命名空间是什么,它来自哪里。
  • 命名空间符号来自这个 xmlns 标记:xmlns:sec="cxf.apache.org/configuration/security" 我猜这与某些版本的骆驼 cxf 罐子。但不确定,仍在研究中。
  • 我猜,这个问题与属性文件加载无关。但是与正在应用的 jdk 版本+cxf+camel jars 版本有关。正在将现有的基于 jdk1.6 的骆驼应用程序使用 SSL 握手调用 SOAP 服务转换为新的基于 Spring Boot 的应用程序;看起来 cxf,用于 1.6 版本的骆驼罐不适合这里。我得到的错误是 -"javax.net.ssl.SSLHandshakeException: No proper protocol" 。在 1.6 中使用相同的 jks 凭据,这个相同的肥皂调用工作正常。我的直觉是这个 jar 的版本是罪魁祸首 [cxf-rt-transports-http-3.0.5.jar:3.0.5]

标签: spring-boot configuration ssl-certificate sslhandshakeexception


【解决方案1】:

正如我在最新评论中提到的,我的主要问题与 SSL HandshakeException(未找到合适的协议)有关。我正在使用 JDK 1.8。

后来我意识到 jdk 8 不支持密码过滤器“SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256”。一旦我更改为“TSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256”,一切都开始按预期工作。

从该站点获得的解决方案提示: http://www.ateam-oracle.com/tls-and-java/

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 2020-04-14
    • 1970-01-01
    • 2021-06-05
    • 2019-03-16
    • 2020-09-07
    • 2016-07-17
    • 1970-01-01
    • 2015-01-23
    相关资源
    最近更新 更多