Hi

I have performed some test on karaf 2.4.1 with Camel 2.14.2 and ActiveMQ 5.10.2

karaf@root> features:chooseurl activemq 5.10.2
karaf@root> features:chooseurl camel 2.14.2
karaf@root> features:install activemq-broker activemq-blueprint activemq-camel
karaf@root> features:install camel-blueprint camel-jms

I have also installed the jmsfeature for tests

karaf@root> features:install jms

Next I have deployed your connection factory (your first blueprint) into the 
deploy directory. No problem. I have done
only one modification by adding a osgi.jndi.service.name property to the 
exported service to allow to manage it by the
jms commands

   <service ref="pooledConnectionFactory" 
interface="javax.jms.ConnectionFactory">
        <service-properties>
         <entry key="osgi.jndi.service.name" value="jms/localhost" />
            <entry key="name" value="localhost"/>
        </service-properties>
    </service> 

Next:

karaf@root> list
.....
[ 143] [Active     ] [Created     ] [       ] [   80] cf.xml (0.0.0)


karaf@root> ls 143

Bundle 143 provides:
--------------------
name = localhost
objectClass = [javax.jms.ConnectionFactory]
osgi.jndi.service.name = jms/localhost
osgi.service.blueprint.compname = pooledConnectionFactory
service.id = 480
----
objectClass = [org.osgi.service.blueprint.container.BlueprintContainer]
osgi.blueprint.container.symbolicname = cf.xml
osgi.blueprint.container.version = 0.0.0
service.id = 481


The connection factory seems to be correctly exported as OSGi service. Yet some 
tests:


karaf@root> jms:queues jms/localhost
JMS Queues
Error executing command: org/apache/activemq/pool/PooledConnection

I had one error while sending message into the queue

java.lang.ClassNotFoundException: org.apache.activemq.pool.PooledConnection not 
found by org.apache.karaf.jms.core [55]

Refreshing the bundle org.apache.karaf.jms.core helped.

karaf@root> jms:connectionfactories
JMS Connection Factory
jms/localhost
karaf@root> jms:send jms/localhost test-queue "test message"
karaf@root> jms:queues jms/localhost
JMS Queues
test-queue

Please check first your Connection Factory like above to be sure it has been 
correctly exported.

Similar problems have been already reported:

  *

    https://issues.apache.org/jira/browse/ARIES-959

  *

    https://issues.apache.org/jira/browse/ARIES-961

  *

    https://issues.apache.org/jira/browse/ARIES-1151

  *

    https://issues.apache.org/jira/browse/SM-2338

I suppose the problem is somewhere in your second bundle and is caused by an 
issue in Aries or Felix. In this post a
user reports the problem and using Equinox instead of Felix seems to solve this 
problem
(http://karaf.922171.n3.nabble.com/Error-when-updating-a-bundle-td4031720.html)

Regards
Krzysztof


On 24.03.2015 17:43, Krzysztof Sobkowiak wrote:
> Hi
>
> Could you tell a bit more how are you deploying this connection factory 
> configuration (bundle containing this blueprint
> or blueprint in deploy directory)? Which versions (Karaf, Camel, ActiveMQ) 
> are you using?
>
> Regards
> Krzysztof
>
>
> On 24.03.2015 14:59, niels wrote:
>> Hey,
>>
>> I'm trying to get a reference to the ActiveMQ connection factory service
>> I've exported. 
>> But without any luck, I was hoping somebody could help me and point me in
>> the right direction.
>>
>> This is the blueprint file I have to setup ActiveMQ and export the service:
>>
>> /<?xml version="1.0" encoding="UTF-8"?>
>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>>            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>            xsi:schemaLocation="
>>     http://www.osgi.org/xmlns/blueprint/v1.0.0
>> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
>>
>>     <bean id="activemqConnectionFactory"
>> class="org.apache.activemq.ActiveMQConnectionFactory">
>>         <property name="brokerURL"
>> value="vm://amq-broker?create=false&amp;waitForStart=10000" />
>>     </bean>
>>
>>     <bean id="pooledConnectionFactory"
>> class="org.apache.activemq.pool.PooledConnectionFactory">
>>         <property name="maxConnections" value="8" />
>>         <property name="connectionFactory" ref="activemqConnectionFactory"
>> />
>>     </bean>
>>
>>     <bean id="resourceManager"
>> class="org.apache.activemq.pool.ActiveMQResourceManager"
>> init-method="recoverResource">
>>         <property name="transactionManager" ref="recoverableTxManager" />
>>         <property name="connectionFactory" ref="activemqConnectionFactory"
>> />
>>         <property name="resourceName" value="activemq.amq-broker" />
>>     </bean>
>>
>>     <reference id="recoverableTxManager"
>> interface="org.apache.geronimo.transaction.manager.RecoverableTransactionManager"
>> availability="mandatory" />
>>
>>     <service ref="pooledConnectionFactory"
>> interface="javax.jms.ConnectionFactory">
>>         <service-properties>
>>             <entry key="name" value="localhost"/>
>>         </service-properties>
>>     </service>
>> </blueprint>/
>>
>> But when I check the headers from this package I noticed there isn't any
>> `Export-Service` listed for that bundle.
>>
>> And when I try to get a reference in another blueprint file like this:
>>
>> /<?xml version="1.0" encoding="UTF-8"?>
>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>>            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>            xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
>>            http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
>>
>>       ....
>>     <reference id="jmsConnectionFactory"
>> interface="javax.jms.ConnectionFactory"/>
>>
>>     <bean id="invoiceEventPublisher"
>> class="nl.kabisa.flux.invoicing.InvoiceEventPublisher">
>>         <property name="connectionFactory" ref="jmsConnectionFactory"/>
>>     </bean>
>>
>>     ....
>> </blueprint>/
>>
>> I get the following log message:
>>
>> / 2015-03-24 14:33:00,831 | ERROR | -SNAPSHOT/deploy |
>> BlueprintContainerImpl           | ?                                   ? | 7
>> - org.apache.aries.blueprint.core - 1.4.0 | Unable to start blueprint
>> container for bundle ID_550952684d61638714670000.xml
>> org.osgi.service.blueprint.container.ComponentDefinitionException:
>> java.lang.NullPointerException
>>      at
>> org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:122)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0_11]
>>      at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0_11]
>>      at
>> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:681)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:378)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:276)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:245)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:235)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[10:org.apache.aries.util:1.1.0]
>>      at
>> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[10:org.apache.aries.util:1.1.0]
>>      at
>> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[10:org.apache.aries.util:1.1.0]
>>      at
>> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[10:org.apache.aries.util:1.1.0]
>>      at
>> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[10:org.apache.aries.util:1.1.0]
>>      at
>> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1103)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:695)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:483)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4244)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.Felix.startBundle(Felix.java:1923)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1245)[6:org.apache.felix.fileinstall:3.4.0]
>>      at
>> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1217)[6:org.apache.felix.fileinstall:3.4.0]
>>      at
>> org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1207)[6:org.apache.felix.fileinstall:3.4.0]
>>      at
>> org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:504)[6:org.apache.felix.fileinstall:3.4.0]
>>      at
>> org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:358)[6:org.apache.felix.fileinstall:3.4.0]
>>      at
>> org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:310)[6:org.apache.felix.fileinstall:3.4.0]
>> Caused by: java.lang.NullPointerException
>>      at
>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1432)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)[org.apache.felix.framework-4.0.3.jar:]
>>      at
>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
>>      at java.lang.ClassLoader.loadClass(ClassLoader.java:410)[:1.7.0_11]
>>      at java.lang.ClassLoader.loadClass(ClassLoader.java:356)[:1.7.0_11]
>>      at java.lang.Class.forName0(Native Method)[:1.7.0_11]
>>      at java.lang.Class.forName(Class.java:264)[:1.7.0_11]
>>      at
>> org.apache.aries.proxy.impl.interfaces.ProxyClassLoader.isInvalid(ProxyClassLoader.java:109)[12:org.apache.aries.proxy.impl:1.0.2]
>>      at
>> org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator.getProxyInstance(InterfaceProxyGenerator.java:84)[12:org.apache.aries.proxy.impl:1.0.2]
>>      at
>> org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:72)[12:org.apache.aries.proxy.impl:1.0.2]
>>      at
>> org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:75)[12:org.apache.aries.proxy.impl:1.0.2]
>>      at
>> org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingProxy(AbstractProxyManager.java:40)[12:org.apache.aries.proxy.impl:1.0.2]
>>      at
>> org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createProxy(AbstractServiceReferenceRecipe.java:338)[7:org.apache.aries.blueprint.core:1.4.0]
>>      at
>> org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:106)[7:org.apache.aries.blueprint.core:1.4.0]/
>>
>> So apparently no service is found for the specific interface. I find this
>> strange since I have several bundles running with Camel and also using the
>> ActiveMQ queues in between. Those bundles don't complain of a
>> ConnectionFactory missing. 
>> I'm assuming I'm missing something to export the service. Is there anybody
>> who could point me in the right direction? All help is welcome.
>>
>> Cheers,
>>
>> Niels
>>
>>
>>
>>
>>
>>
>> --
>> View this message in context: 
>> http://karaf.922171.n3.nabble.com/Retrieve-reference-of-JMS-ConnectionFactory-tp4039259.html
>> Sent from the Karaf - User mailing list archive at Nabble.com.

-- 
Krzysztof Sobkowiak

JEE & OSS Architect
Senior Solution Architect @ Capgemini SSC <http://www.pl.capgemini-sdm.com/en>
Apache ServiceMix <http://servicemix.apache.org/> Committer & PMC

Reply via email to