Hello, I am trying to migrate to Camel 2.21.0. I have two separate OSGi Blueprint bundles, lets call them A, and B. Bundle A's blueprint XML creates and exports a org.apache.camel.util.jsse.SSLContextParameters as an OSGi service :
<cm:property-placeholder persistent-id=“myconfig" update-strategy="reload" placeholder-prefix="#{" placeholder-suffix="}" > <cm:default-properties> <cm:property name="keystore.password" value="keystore"/> <cm:property name="keystore.file" value="${user.home}/keystore.jks"/> <cm:property name="keystore.type" value="JKS"/> <cm:property name="keystore.provider" value="SUN"/> <cm:property name="trustore.file" value="${user.home}/truststore.jks"/> <cm:property name="truststore.password" value="truststore"/> <cm:property name="truststore.type" value="JKS"/> <cm:property name="truststore.provider" value="SUN"/> </cm:default-properties> </cm:property-placeholder> <camel:sslContextParameters id="sslParams"> <camel:keyManagers keyPassword="{{keystore.password}}"> <camel:keyStore resource="{{keystore.file}}" password="{{keystore.password}}" type="{{keystore.type}}" provider="{{lkeystore.provider}}" /> </camel:keyManagers> <camel:trustManagers> <camel:keyStore resource="{{trustore.file}}" password="{{truststore.password}}" type="{{truststore.type}}" provider="{{truststore.provider}}" /> </camel:trustManagers> </camel:sslContextParameters> <service ref="sslParams" interface="org.apache.camel.util.jsse.SSLContextParameters"> </service> Notice the sslParams is defined using property placeholders for which default values are provided in the same Bundle A. Now in Bundle B, I import the sslParams: <reference id="sslParams" interface="org.apache.camel.util.jsse.SSLContextParameters" ext:proxy-method="classes" activation="lazy"/> When I deploy my application (Karaf), I get exception during Bundle 2 initialization: Caused by: java.lang.IllegalArgumentException: Property with key [keystore.password] not found in properties from text: {{keystore.password}} at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.getPropertyValue(DefaultPropertiesParser.java:270) ~[?:?] at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.readProperty(DefaultPropertiesParser.java:156) ~[?:?] at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.doParse(DefaultPropertiesParser.java:115) ~[?:?] at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.parse(DefaultPropertiesParser.java:99) ~[?:?] at org.apache.camel.component.properties.DefaultPropertiesParser.parseUri(DefaultPropertiesParser.java:62) ~[?:?] at org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:235) ~[?:?] at org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:178) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:2550) ~[?:?] at org.apache.camel.util.jsse.JsseParameters.parsePropertyValue(JsseParameters.java:74) ~[?:?] ... 42 more Of course, Bundle B does not know about these configuration properties, since they are defined in Bundle A. The bean should have been resolved, created and exported by Bundle A before it is imported by Bundle B, but it looks as if it is bundle B the one doing the property lookup. This was working fine in Camel 2.17.4. Any idea? Best regards, Alex soto