Thank you Guillaume, You are correct, I tried your suggestion locally and it does work. I don’t know what are the potential side effects of this change though. Probably better that somebody more familiar with this code takes a look and fixes it.
Best regards, Alex soto > On Feb 23, 2018, at 12:04 PM, Guillaume Nodet <gno...@apache.org> wrote: > > As I indicated on the Karaf mailing list, I suspect the problem comes from > > https://github.com/apache/camel/blob/master/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java#L1056 > > I think it should call getComponent(component, false) instead to ensure the > component is not created eagerly. > > The reason is that the exception is saying that the processor (the property > placeholder) can't process the bean because it has been already > instantiated. And that call could be the culprit as the OSGi camel context > may attempt to create the component. > > That could break the original intent though, in which case, we'd need to go > to the blueprint container and check if the component is available without > creating it. > > Guillaume > > > 2018-02-23 17:55 GMT+01:00 Quinn Stevenson <qu...@pronoia-solutions.com>: > >> That makes more sense :-) >> >> When I’ve seen this kind of stuff before, it’s usually that the >> initialization of bean that is a dependency of another bean fails. I start >> at the first exception I see - that usually points me to the right place. >> >> In this case, it’s acting like it can’t find a setter for the correct type >> - maybe that changed across Camel versions? >> >>> On Feb 23, 2018, at 6:49 AM, Alex Soto <alex.s...@envieta.com> wrote: >>> >>> The actual code is well-formed, this was just error formatting the code >> for the post. I’ll try again: >>> >>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:camel="http://camel.apache.org/schema/blueprint" >>> xmlns:cm="http://aries.apache. >> org/blueprint/xmlns/blueprint-cm/v1.1.0" >>> xmlns:ext="http://aries.apache.org/blueprint/xmlns/ >> blueprint-ext/v1.0.0" >>> xsi:schemaLocation=" >>> http://www.osgi.org/xmlns/blueprint/v1.0.0 >>> https://www.osgi.org/xmlns/ >> blueprint/v1.0.0/blueprint.xsd”> >>> >>> <cm:property-placeholder persistent-id="audit.log" >>> update-strategy="reload” >>> placeholder-prefix="#{" placeholder-suffix="}"> >>> <cm:default-properties> >>> <cm:property name="audit-log.reaper.cron" value="0 >> 0/30 * * * ?" /> >>> <cm:property name="startDelaySeconds" >> value="600" /> >>> </cm:default-properties> >>> </cm:property-placeholder> >>> >>> >>> >>>> On Feb 22, 2018, at 9:56 PM, Quinn Stevenson < >> qu...@pronoia-solutions.com> wrote: >>>> >>>> Is that really the XML? It’s not well formed - you start with a >> cm:property-placeholder element and end with a cm:default-properties >> element. >>>> >>>>> On Feb 22, 2018, at 12:48 PM, Alex Soto <alex.s...@envieta.com> wrote: >>>>> >>>>> Hello, >>>>> >>>>> I am having some problems migrating to Camel 2.20.2 from 2.17.4. I >> have blueprint configuration: >>>>> >>>>> <cm:property-placeholder >>>>> persistent-id=“audit.log” >>>>> update-strategy="reload” >>>>> placeholder-prefix="#{" >> placeholder-suffix="}”> >>>>> >>>>> <cm:property name=“startDelaySeconds" value="600" >> /> >>>>> <cm:property name="cron" value="0 0/30 * * * ?" /> >>>>> </cm:default-properties> >>>>> >>>>> A component configuration (in this case for Quartz2, but I don’t think >> this is related to Quartz2): >>>>> >>>>> <bean id="audit-log-reaper-quartz" class="org.apache.camel. >> component.quartz2.QuartzComponent"> >>>>> <property name="startDelayedSeconds" >> value="#{startDelaySeconds}" /> >>>>> </bean> >>>>> >>>>> Then use this in a route: >>>>> >>>>> <route id="reaper-scheduler"> >>>>> <from uri="audit-log-reaper-quartz://reaper?cron={{cron}}" >> /> >>>>> ... >>>>> >>>>> When I run this (Karaf 4.2.5) an exception is thrown: >>>>> >>>>> org.osgi.service.blueprint.container.ComponentDefinitionException: >> Name audit-log-reaper-quartz is already instanciated as null and cannot be >> removed. >>>>> at org.apache.aries.blueprint.container.BlueprintRepository. >> removeRecipe(BlueprintRepository.java:131) [38:org.apache.aries. >> blueprint.core:1.8.3] >>>>> at org.apache.aries.blueprint.container.BlueprintContainerImpl. >> updateUninstantiatedRecipes(BlueprintContainerImpl.java:572) >> [38:org.apache.aries.blueprint.core:1.8.3] >>>>> at org.apache.aries.blueprint.container.BlueprintContainerImpl. >> processProcessors(BlueprintContainerImpl.java:559) [38:org.apache.aries. >> blueprint.core:1.8.3] >>>>> at org.apache.aries.blueprint.container. >> BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:394) >> [38:org.apache.aries.blueprint.core:1.8.3] >>>>> at org.apache.aries.blueprint.container. >> BlueprintContainerImpl.run(BlueprintContainerImpl.java:275) >> [38:org.apache.aries.blueprint.core:1.8.3] >>>>> >>>>> >>>>> This was working fine in Camel 2.17.4. Interestingly, if I remove >> property place holder: >>>>> >>>>> <bean id="audit-log-reaper-quartz" class="org.apache.camel. >> component.quartz2.QuartzComponent"> >>>>> <property name="startDelayedSeconds" value="600" /> >>>>> </bean> >>>>> >>>>> Then it works fine, no errors. So this seems to be related to the >> property placeholders. Has anybody seen this? >>>>> I appreciate any insight on how to solve this problem. >>>>> >>>>> Best regards, >>>>> Alex soto >>>>> >>>>> >>>>> >>>> >>> >> >> > > > -- > ------------------------ > Guillaume Nodet