ActiveMQ
  1. ActiveMQ
  2. AMQ-1638

XmlBeanDefinitionStoreException : activemq.xsd URL broken in spring.schemas

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.0
    • Fix Version/s: 5.9.0
    • Component/s: Broker
    • Labels:
      None
    • Environment:

      activemq-core-5.0.0 and spring-jms-2.5.2 .

    • Regression:
      Regression

      Description

      Problem description

      activemq-core's spring.schemas file targets broken activemq xsd urls. When beans.xml targets the correct activemq-core-5.0.0.xsd url in xsi:schemaLocation attribute, Spring fails to start if an internet connection to activemq.apache.org does not work.

      Sample of currently failing spring configuration file

      beans.xml with "activemq-core-5.0.0.xsd" in "xsi:schemaLocation" attribute
      <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang"
         xmlns:amq="http://activemq.org/config/1.0" xmlns:jms="http://www.springframework.org/schema/jms"
         xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
      http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd
      http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd
      http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd">
         ...
         <amq:queue id="requestDestination" physicalName="requestDestination" />
         <amq:queue id="replyToDestination" physicalName="replyToDestination" />
         <amq:connectionFactory id="activeMqConnectionFactory" brokerURL="vm://localhost?broker.persistent=false&amp;broker.useJmx=false" />
         ...
      </beans>
      

      Spring loading failure stacktrace

      42907 [main] WARN  org.springframework.beans.factory.xml.XmlBeanDefinitionReader  - Ignored XML validation warning
      org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
      	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
      ...
      	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
      	at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
      ...
      	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:44)
      ...
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
      42969 [main] ERROR org.springframework.test.context.TestContextManager  - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1be8711] to prepare test instance [fr.xebia.sample.springframework.jms.requestreply.RequestReplySpringFrameworkTest@1958cc2]
      org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from class path resource [fr/xebia/sample/springframework/jms/requestreply/beans.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'amq:queue'.
      	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
      ...
      	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:44)
      ...
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
      Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'amq:queue'.
      	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
      ...
      	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
      	at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
      	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:382)
      	... 26 more
      
      1. AMQ-1638.patch
        0.7 kB
        Cyrille Le Clerc

        Issue Links

          Activity

            People

            • Assignee:
              Hiram Chirino
              Reporter:
              Cyrille Le Clerc
            • Votes:
              4 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development