Think this dependency was introduced by https://issues.apache.org/activemq/browse/AMQ-2574 that was reopened so the fix can be reworked to make the dependency optional.
On 28 June 2010 08:27, Jean-Baptiste Onofré <[email protected]> wrote: > Hi all, > > as you know, ActiveMQ is used in ServiceMix as default message broker. > > ServiceMix 3.3.x uses Spring configuration and loads the ActiveMQ bean in > activemq.xml Spring file: > > <beans xmlns:amq="http://activemq.apache.org/schema/core"> > <!-- ActiveMQ JMS Broker configuration --> > <amq:broker id="broker" depends-on="jmxServer" useShutdownHook="false"> > > <!-- Disable creation of the jmx connector > which is created in the jmx.xml configuration file --> > <amq:managementContext> > <bean class="org.apache.activemq.broker.jmx.ManagementContext"> > <property name="createConnector" value="false" /> > </bean> > </amq:managementContext> > > <!-- Use AMQ Message Store as default broker persistence adapter --> > <amq:persistenceAdapter> > <amq:amqPersistenceAdapter directory="file:./data/amq"/> > > <!-- Examples for journaledJDBC if JDBC is required --> > <!-- > <amq:journaledJDBC journalLogFiles="5" dataDirectory="./data/amq"/> > <amq:journaledJDBC journalLogFiles="5" dataDirectory="../data" > dataSource="#postgres-ds"/> > --> > </amq:persistenceAdapter> > > <amq:transportConnectors> > <!-- Activate a TCP connector with multicast discovery. > Note that multicast may be disabled if your computer > is not on a network, which may prevent the broker to start. > In such a case, just remove the discoveryUri attribute. > --> > <amq:transportConnector uri="tcp://localhost:61616" > discoveryUri="multicast://default"/> > </amq:transportConnectors> > > <amq:networkConnectors> > <!-- by default just auto discover the other brokers --> > <amq:networkConnector uri="multicast://default"/> > <!-- > <amq:networkConnector > uri="static://(tcp://host1:61616,tcp://host2:61616)"/> > --> > </amq:networkConnectors> > > </amq:broker> > > </beans> > > Up to ActiveMQ 5.3.1, we didn't encounter any issue with that. > > But now, I updated ServiceMix 3.3.x to use ActiveMQ 5.3.2 and I got the > following at startup: > > Caught: org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'broker' defined in class path resource > [activemq.xml]: Instantiation of bean failed; nested exception is > org.springframework.beans.BeanInstantiationException: Could not instantiate > bean class [org.apache.activemq.xbean.XBeanBrokerService]: Constructor threw > exception; nested exception is java.lang.NoClassDefFoundError: > org/osgi/framework/BundleException > > It looks like ActiveMQ 5.3.2 bean now have a dependency to OSGi framework. > > As ServiceMix 3.3.x doesn't use OSGi at all (pure Spring), I'm not very > pleased to add OSGi framework in the distribution classpath. > > Moreover, for ActiveMQ, I think that this dependency is not very flexible > for users that use ActiveMQ "outside" OSGi. > > Is it possible to define this dependency as an optional one ? > What do you think ? > > FYI, I raise the following Jira task about this: > https://issues.apache.org/activemq/browse/SM-1958 > > Thanks > Regards > JB > -- http://blog.garytully.com Open Source Integration http://fusesource.com
