Hi, A single property-placeholder is only going to allow one backing persistent-id. You can instead create multiple property-placeholders with different ids, e.g. <cm:property-placeholder id="propertiesBean" persistent-id=">. . . <cm:property-placeholder id="edigrid.cluster" persistent-id=" >. . .
see https://stackoverflow.com/questions/50354932/how-to-use-multiple-property-placeholder-in-jboss-fuse-blueprint Hope that helps. -John On Thu, Sep 16, 2021 at 7:58 AM Andrei Petru Mura <mapand...@gmail.com> wrote: > Hi all, > > I'm trying to migrate my camel routes from an older karaf using Spring-DM > to a newer one using Blueprint. For this, I intend to import my spring XML > configuration in my blueprint XML file. The camel context is defined in the > blueprint XML file. > Currently I'm stuck with a placeholder issue. I'm trying to import some > configuration properties from OSGI environment which are stored in a few > files under the ${karaf.home}/etc directory. > I tried many ways according to this documentation page ( > https://camel.apache.org/components/2.x/properties-component.html), but > still not getting the functionality which I want. > > On short, I want to be able to define in my XML files (blueprint, spring) > some default values for some properties, overriding them with the > configurations found in the configuration files from ${karaf.home}/etc/ and > be able to use them in in both blueprint XML and spring XML files. > Preferable by ${variableName}. > > Currently, I did this: > > Blueprint XML: > > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:bean="http://www.springframework.org/schema/beans" > xmlns:camel="http://camel.apache.org/schema/spring" > xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" > xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd > http://www.springframework.org/schema/osgi-compendium > > http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd > "> > > <cm:property-placeholder id="propertiesBean" > persistent-id="edigrid.persistence,edigrid.server.id > ,edigrid.cluster,edigrid.ftpconfig,edigrid.reports"> > <cm:default-properties>...</cm:default-properties> > </cm:property-placeholder> > > ... > > <camelContext ...> > <route ...> > ... accessing ${configVarHere1} > </route> > </camelContext> > </blueprint> > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:ctx="http://www.springframework.org/schema/context" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://www.springframework.org/schema/context > http://www.springframework.org/schema/context/spring-context.xsd"> > > <beans> > > <bean id="bridgePropertyPlaceholder" > class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer"> > </bean> > > ...accessing ${configVarHere2} > </beans> > </beans> > > I get this kind of error (because of spring XML): > Failed to convert property value of type 'java.lang.String' to required > type 'int' for property 'configPropName'; nested exception is > java.lang.NumberFormatException: For input string: "${configProprName}" > > after I get a few messages like: > The property placeholder processor for ${, } in bundle > bundleName/BundleVersion found an immutable Constructor Argument at > location Bean named beanName->Argument index -1 and value type null->. This > may prevent properties, beans, or other items referenced by this component > from being properly processed. > > Any idea how I can solve my issue? > > Thanks, > Mura Andrei >