You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Nikolay Voskresenskiy (JIRA)" <ji...@apache.org> on 2016/12/28 19:01:58 UTC

[jira] [Commented] (AMQ-6268) activemq broker cannot start

    [ https://issues.apache.org/jira/browse/AMQ-6268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15783503#comment-15783503 ] 

Nikolay Voskresenskiy commented on AMQ-6268:
--------------------------------------------

I ran into the same issue and was able to reproduce it without camel at all! In fact, the error always happens in case when the container has both spring 3.x and 4.x feature installed

Here is a sample karaf assembly configuration:
{code}
                     <plugin>
                        <groupId>org.apache.karaf.tooling</groupId>
                        <artifactId>karaf-maven-plugin</artifactId>
                        <version>${karaf.version}</version>
                        <extensions>true</extensions>
                        <configuration>
                            <installedFeatures>
                                <feature>wrapper</feature>
                            </installedFeatures>
                            <startupFeatures>
                                <feature>standard</feature>
                            </startupFeatures>
                            <bootFeatures>
                                <feature>activemq-broker</feature>
                                <feature>hawtio-offline</feature>
                                <feature>spring/4.2.5.RELEASE_1</feature>
                            </bootFeatures>

                        </configuration>
                    </plugin>
{code}

I believe the root cause of the issue is:

* the xbean library manifest restricts spring version range to [3.2,4)
* the activemq feature also restricts spring version range to [3.2,4) (correct)
* the activemq-osgi module manifest specifies spring version range as [3.2, 5) (incorrect?!)

This causes class org.apache.activemq.osgi.ActiveMQServiceFactory to be wired to the bundle classloader for the latest allowed spring version installed (which is now 4.x), and consequently it then fails to load xbean classes which are restricted to spring 3.x

Stack trace with bundle versions:

{code}
2016-12-28 13:52:04,178 | INFO  | ctivemq.server]) | ActiveMQServiceFactory           | 65 - org.apache.activemq.activemq-osgi - 5.14.3 | Starting broker amq-broker
2016-12-28 13:52:04,254 | INFO  | ctivemq.server]) | ClassPathXmlApplicationContext   | 91 - org.apache.servicemix.bundles.spring-context - 4.2.5.RELEASE_1 | Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7af27377: startup date [Wed Dec 28 13:52:04 EST 2016]; root of context hierarchy
2016-12-28 13:52:04,703 | INFO  | ctivemq.server]) | XmlBeanDefinitionReader          | 89 - org.apache.servicemix.bundles.spring-beans - 4.2.5.RELEASE_1 | Loading XML bean definitions from URL [file:/C:/Work/Java/otc-trade-service-fuse/karaf/target/assembly/etc/activemq.xml]
2016-12-28 13:52:04,794 | ERROR | ctivemq.server]) | configadmin                      | 5 - org.apache.felix.configadmin - 1.8.8 | [org.osgi.service.cm.ManagedServiceFactory, id=393, bundle=65/mvn:org.apache.activemq/activemq-osgi/5.14.3]: Updating configuration org.apache.activemq.server.adbfe35b-d95f-4102-9ba4-8ba299636be2 caused a problem: Cannot start the broker
org.osgi.service.cm.ConfigurationException: null : Cannot start the broker
	at org.apache.activemq.osgi.ActiveMQServiceFactory.updated(ActiveMQServiceFactory.java:144)[65:org.apache.activemq.activemq-osgi:5.14.3]
	at org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.updated(ManagedServiceFactoryTracker.java:159)[5:org.apache.felix.configadmin:1.8.8]
	at org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.provideConfiguration(ManagedServiceFactoryTracker.java:93)[5:org.apache.felix.configadmin:1.8.8]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.provide(ConfigurationManager.java:1602)[5:org.apache.felix.configadmin:1.8.8]
	at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:1545)[5:org.apache.felix.configadmin:1.8.8]
	at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:143)[5:org.apache.felix.configadmin:1.8.8]
	at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:110)[5:org.apache.felix.configadmin:1.8.8]
	at java.lang.Thread.run(Thread.java:745)[:1.8.0_20]
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL [file:/C:/Work/Java/otc-trade-service-fuse/karaf/target/assembly/etc/activemq.xml]; nested exception is org.springframework.beans.FatalBeanException: NamespaceHandler class [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] for namespace [http://activemq.apache.org/schema/core] not found; nested exception is java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler not found by org.apache.activemq.activemq-osgi [65]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)[91:org.apache.servicemix.bundles.spring-context:4.2.5.RELEASE_1]
	at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)[91:org.apache.servicemix.bundles.spring-context:4.2.5.RELEASE_1]
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)[91:org.apache.servicemix.bundles.spring-context:4.2.5.RELEASE_1]
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:609)[91:org.apache.servicemix.bundles.spring-context:4.2.5.RELEASE_1]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:510)[91:org.apache.servicemix.bundles.spring-context:4.2.5.RELEASE_1]
	at org.apache.activemq.osgi.ActiveMQServiceFactory.updated(ActiveMQServiceFactory.java:126)[65:org.apache.activemq.activemq-osgi:5.14.3]
	... 7 more
Caused by: org.springframework.beans.FatalBeanException: NamespaceHandler class [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] for namespace [http://activemq.apache.org/schema/core] not found; nested exception is java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler not found by org.apache.activemq.activemq-osgi [65]
	at org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:136)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1406)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:168)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:138)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	... 19 more
Caused by: java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler not found by org.apache.activemq.activemq-osgi [65]
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)[org.apache.felix.framework-5.4.0.jar:]
	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)[org.apache.felix.framework-5.4.0.jar:]
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)[org.apache.felix.framework-5.4.0.jar:]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_20]
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)[95:org.apache.servicemix.bundles.spring-core:4.2.5.RELEASE_1]
	at org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:125)[89:org.apache.servicemix.bundles.spring-beans:4.2.5.RELEASE_1]
	... 26 more
{code}


The only workaround for now seems to be to revert to camel 2.16 and blacklist spring 4.x from the container complete for the time being

> activemq broker cannot start
> ----------------------------
>
>                 Key: AMQ-6268
>                 URL: https://issues.apache.org/jira/browse/AMQ-6268
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: activemq-camel
>    Affects Versions: 5.13.2
>         Environment: karaf 4.x, camel 2.17.0, activemq 5.13.2
>            Reporter: Alexandre Cartapanis
>
> On karaf 4.x plateform, with camel 2.17.0 and activemq 5.13.2 features, installs feature activemq-camel and then installs activemq-broker-noweb. The broker fails to start with error java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler not found by org.apache.activemq.activemq-osgi.
> This is not happening with camel 2.16.3
> This is not happening either if activemq-camel is not installed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)