Hi All,
i have camel route in a OSGi bundle. On one machine where we have maven
repo access and install via a feature it works nicely. On the other
machine we get an exception.
org.osgi.service.blueprint.container.ComponentDefinitionException:
Unable to intialize bean .camelBlueprint.factory.camelContext
Caused by: java.lang.IllegalArgumentException: connectionFactory must be
specified
The strange thing is that we inject the connectionFactory into the
JmsConfiguration. As the blueprint context below shows. There is one
thing we did a bit unorthodox. As the IBM MQ driver did not work as a bundle
we inlined it into our bundle.
Any ideas ?
Christian
----
2012-04-11 14:54:11,093 | ERROR | rint Extender: 2 |
BlueprintContainerImpl | container.BlueprintContainerImpl 358
| 9 - org.apache.aries.blueprint - 0.3.1 | Unable to start blueprint
container for bundle dispatcher
org.osgi.service.blueprint.container.ComponentDefinitionException:
Unable to intialize bean .camelBlueprint.factory.camelContext
at
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:638)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:198)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:137)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.getComponentInstance(BlueprintContainerImpl.java:718)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.camel.blueprint.handler.CamelNamespaceHandler$CamelDependenciesFinder.process(CamelNamespaceHandler.java:619)[172:org.apache.camel.camel-blueprint:2.8.4]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:495)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:314)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)[9:org.apache.aries.blueprint:0.3.1]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_18]
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_18]
at
java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_18]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_18]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)[:1.6.0_18]
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_18]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_18]
at java.lang.Thread.run(Thread.java:619)[:1.6.0_18]
Caused by: java.lang.IllegalArgumentException: connectionFactory must be
specified
at
org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:278)
at
org.apache.camel.component.jms.JmsConfiguration.createConnectionFactory(JmsConfiguration.java:1015)
at
org.apache.camel.component.jms.JmsConfiguration.getConnectionFactory(JmsConfiguration.java:396)
at
org.apache.camel.component.jms.JmsConfiguration.createListenerConnectionFactory(JmsConfiguration.java:1024)
at
org.apache.camel.component.jms.JmsConfiguration.getListenerConnectionFactory(JmsConfiguration.java:415)
at
org.apache.camel.component.jms.JmsConfiguration.configureMessageListenerContainer(JmsConfiguration.java:854)
at
org.apache.camel.component.jms.JmsConfiguration.createMessageListenerContainer(JmsConfiguration.java:368)
at
org.apache.camel.component.jms.JmsEndpoint.createMessageListenerContainer(JmsEndpoint.java:166)
at
org.apache.camel.component.jms.JmsEndpoint.createConsumer(JmsEndpoint.java:161)
at
org.apache.camel.component.jms.JmsEndpoint.createConsumer(JmsEndpoint.java:72)
at
org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:61)
at
org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:75)
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:131)
at
org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:1873)
at
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1801)
at
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1823)
at
org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:1705)
at
org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:699)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1681)
at
org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:641)
at
org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:337)
at
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:265)
at
dispatcher.DispatcherRouteFactory.addRoutesToCamelContext(DispatcherRouteFactory.java:24)
at
org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:603)
at
org.apache.camel.core.xml.AbstractCamelContextFactoryBean.installRoutes(AbstractCamelContextFactoryBean.java:626)
at
org.apache.camel.core.xml.AbstractCamelContextFactoryBean.afterPropertiesSet(AbstractCamelContextFactoryBean.java:306)
at
org.apache.camel.blueprint.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:263)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)[:1.6.0_18]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_18]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_18]
at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_18]
at
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824)[9:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636)[9:org.apache.aries.blueprint:0.3.1]
... 18 more
----
Below you find the slighty edited blueprint context
---
<?xml version="1.0" encoding="UTF-8"?>
<blueprint default-activation="eager"
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://www.osgi.org/xmlns/blueprint-ext/v1.1.0
https://svn.apache.org/repos/asf/aries/tags/blueprint-0.3.1/blueprint-core/src/main/resources/org/apache/aries/blueprint/ext/blueprint-ext.xsd
http://cxf.apache.org/blueprint/jaxws
http://cxf.apache.org/schemas/blueprint/jaxws.xsd
http://cxf.apache.org/blueprint/jaxrs
http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
http://cxf.apache.org/blueprint/core
http://cxf.apache.org/schemas/blueprint/core.xsd
http://camel.apache.org/schema/blueprint
http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
">
<cm:property-placeholder persistent-id="myconfig" update-strategy="reload">
</cm:property-placeholder>
<bean id="MqConnectionFactory"
class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="hostName" value="${jms.hostName}" />
<property name="port" value="${jms.port}" />
<property name="queueManager" value="${jms.queueManager}" />
<property name="transportType" value="1" />
</bean>
<bean id="connectionFactory"
class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="username" value="${jms.username}"/>
<property name="password" value="${jms.password}"/>
<property name="targetConnectionFactory" ref="MqConnectionFactory"/>
</bean>
<reference id="entityManagerFactory"
interface="javax.persistence.EntityManagerFactory"
filter="(osgi.unit.name=dispatcher)" />
<bean id="dbService" class="...DbService">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="dispatcherRoutes" class="dispatcher.DispatcherRoute">
</bean>
<bean id="transactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration" ref="jmsConfiguration" />
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="jmsConfiguration"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<camelContext id="camelContext" trace="true"
xmlns="http://camel.apache.org/schema/blueprint">
<routeBuilder ref="dispatcherRoutes" />
</camelContext>
</blueprint>
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com