I've successfully installed an ActiveMQ 5.9.0 server in karaf-2.3.3 with the
following command:

 karaf@root> features:chooseurl activemq 5.9.0
 karaf@root> features:install activemq-broker

The default configuration file activemq.xml is placed in the /etc directory.
So far so good. Now I want to register the "pooledConnectionFactory" bean to
the OSGi service registry.

Since the configuration file activemq.xml is spring xml I thought I could
just add the osgi namespace like so:

<beans xmlns="http://www.springframework.org/schema/beans";
xmlns:amq="http://activemq.apache.org/schema/core"; 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:osgi="http://www.springframework.org/schema/osgi"; 
  xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
  http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd
  http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
  http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd";>
  
   …
   
  <bean class="org.apache.activemq.pool.PooledConnectionFactory"
id="pooledConnectionFactory">
    <property name="maxConnections" value="8"/>
                <property name="connectionFactory" 
ref="activemqConnectionFactory"/>
        </bean>

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

At startup I ran into the following exception:

org.osgi.service.cm.ConfigurationException: null : Cannot start the broker
        at
org.apache.activemq.osgi.ActiveMQServiceFactory.updated(ActiveMQServiceFactory.java:110)[98:org.apache.activemq.activemq-osgi:5.9.0]
        at
org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.provideConfiguration(ManagedServiceFactoryTracker.java:88)[5:org.apache.felix.configadmin:1.6.0]
        at
org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.provide(ConfigurationManager.java:1593)[5:org.apache.felix.configadmin:1.6.0]
        at
org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:1536)[5:org.apache.felix.configadmin:1.6.0]
        at
org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:103)[5:org.apache.felix.configadmin:1.6.0]
        at java.lang.Thread.run(Thread.java:724)[:1.7.0_40]
*Caused by: org.springframework.beans.factory.BeanDefinitionStoreException:
Unrecognized xbean namespace mapping:
http://www.springframework.org/schema/osgi*
        at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExtensionElement(XBeanNamespaceHandler.java:284)[97:org.apache.xbean.spring:3.14.0]
        at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parse(XBeanNamespaceHandler.java:156)[97:org.apache.xbean.spring:3.14.0]
        at
org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse(XBeanNamespaceHandler.java:49)[97:org.apache.xbean.spring:3.14.0]
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.apache.xbean.spring.context.v2.XBeanBeanDefinitionDocumentReader.parseBeanDefinitions(XBeanBeanDefinitionDocumentReader.java:84)[97:org.apache.xbean.spring:3.14.0]
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.registerBeanDefinitions(XBeanXmlBeanDefinitionReader.java:79)[97:org.apache.xbean.spring:3.14.0]
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)[61:org.springframework.beans:3.2.4.RELEASE]
        at
org.apache.xbean.spring.context.ResourceXmlApplicationContext.loadBeanDefinitions(ResourceXmlApplicationContext.java:111)[97:org.apache.xbean.spring:3.14.0]
        at
org.apache.xbean.spring.context.ResourceXmlApplicationContext.loadBeanDefinitions(ResourceXmlApplicationContext.java:104)[97:org.apache.xbean.spring:3.14.0]
        at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)[63:org.springframework.context:3.2.4.RELEASE]
        at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)[63:org.springframework.context:3.2.4.RELEASE]
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)[63:org.springframework.context:3.2.4.RELEASE]
        at
org.apache.activemq.osgi.ActiveMQServiceFactory.updated(ActiveMQServiceFactory.java:90)[98:org.apache.activemq.activemq-osgi:5.9.0]
        ... 5 more

If I have to register another self instantiated ConnectionFactory in another
osgi bundle (or blueprint/spring-file) how can I enforce activemq-broker to
be started first?

In a production environment it may even make sense to register a connection
factory per application/bundle, just because every application may have
different access credentials.
But at some point it's convienent to share a global connection factory to
keep the utilized resources low.


Any great ideas?



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/activemq-broker-and-osgi-service-registry-tp4674205.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to