最近在进行新的项目上线,项目是基于resin服务器,
系统在启动时报:
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 16 in XML document from class path resource [MET
A-INF/services-context.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:broker'.
而且有时候又能启动成功,很是奇怪,最后通过官方解释说明配置文件修改方式:
Typically in Apache ActiveMQ we create destinations on demand as clients start to use them. However sometimes users want to be able to configure which destinations are available on startup explicitly in the Xml Configuration.
4.1 Feature Note this feature is available from 4.1 onwards. If you try this XML on older versions of ActiveMQ you will get an exception about the 'destinations' property not being writable. |
Example
The following example shows how you can configure a number of destinations to be available at startup.
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" /> <broker xmlns="http://activemq.apache.org/schema/core"> <destinations> <queue physicalName="FOO.BAR" /> <topic physicalName="SOME.TOPIC" /> </destinations> </broker> </beans>
通过这个方式,最后让系统能够正常启动,不过还是觉得为什么就activeMq的schema文件读取不到呢!!
以后再继续关注(应该需要看下源码)!