Hello,
I posted this in the Camel forum, but I have not received any answer, so I am
trying here as well, since the error is coming from Blueprint.
I am running Karaf 4.2.5, in trying to migrate my project to Camel 2.20.2
(from 2.17.4)
I have blueprint configuration:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>"
xmlns:camel="http://camel.apache.org/schema/blueprint
<http://camel.apache.org/schema/blueprint>"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>"
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0
<http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0>"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
<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>
A bean is configured using some properties (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>
The bean is referenced in a Camel route:
<route id="reaper-scheduler">
<from uri="audit-log-reaper-quartz://reaper?cron={{cron}}
<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]
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