Blueprint property placeholder does not work with http conduit configuration
Issue
I am trying to setup an HTTP conduit configuration that uses Apache Aries Blueprint property-placeholder to inject trust store parameters. The conduit works when I explicitly configure the trust store properties. Unfortunately, when I use placeholders it fails.
Here is my http:conduit configuration:
<http:conduit name="*.http-conduit">
<http:client ConnectionTimeout="30000" ReceiveTimeout="30000" AutoRedirect="true" Connection="Keep-Alive"></http:client>
<http:tlsClientParameters disableCNCheck="${disableCNCheck}">
<sec:keyManagers keyPassword="${keyPassword}">
<sec:keyStore file="${keyStoreFile}" password="${keyStorePassword}" type="${keyStoreType}"></sec:keyStore>
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore file="${trustStoreFile}" password="${trustStorePassword}" type="${trustStoreType}"></sec:keyStore>
</sec:trustManagers>
<sec:certAlias>${certAlias}</sec:certAlias>
<sec:cipherSuitesFilter>
<sec:include>.*_WITH_3DES_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_AES_.*</sec:include>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:exclude>.*_WITH_NULL_.*</sec:exclude>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>
</http:conduit>
I have already configured default value for all property placeholders:
<cm:property-placeholder id="myProps" persistent-id="da.ws" update-strategy="reload">
<cm:default-properties>
<cm:property name="client.host" value="localhost"/>
<cm:property name="keyStoreFile" value="src/test/resources/clientTrustStore.jks"/>
<cm:property name="keyStorePassword" value="cspass"/>
<cm:property name="keyPassword" value="cspass"/>
<cm:property name="keyStoreType" value="jks"/>
<cm:property name="certAlias" value="fusedev"/>
<cm:property name="trustStoreFile" value="src/test/resources/clientTrustStore.jks"/>
<cm:property name="trustStorePassword" value="cspass"/>
<cm:property name="trustStoreType" value="jks"/>
<cm:property name="disableCNCheck" value="true"/>
...
However, I am getting this error:
org.osgi.service.blueprint.container.ComponentDefinitionException: Error when instantiating bean #route-4 of class class org.apache.cxf.configuration.jsse.TLSClientParametersConfig
at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:315)
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:806)
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
...
Caused by: java.security.KeyStoreException: ${keyStoreType} not found
at java.security.KeyStore.getInstance(KeyStore.java:616)
at org.apache.cxf.configuration.jsse.TLSParameterJaxBUtils.getKeyStore(TLSParameterJaxBUtils.java:120)
at org.apache.cxf.configuration.jsse.TLSParameterJaxBUtils.getKeyManagers(TLSParameterJaxBUtils.java:264)
at org.apache.cxf.configuration.jsse.TLSClientParametersConfig.createTLSClientParametersFromType(TLSClientParametersConfig.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:297)
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:958)
at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:313)
... 76 more
Caused by: java.security.NoSuchAlgorithmException: ${keyStoreType} KeyStore not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.KeyStore.getInstance(KeyStore.java:613)
... 86 more
Environment
- JBoss Fuse
- 6.1
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
