Spring,JMS - 无法找到 XML 模式命名空间的 Spring NamespaceHandler
Posted
技术标签:
【中文标题】Spring,JMS - 无法找到 XML 模式命名空间的 Spring NamespaceHandler【英文标题】:Spring, JMS - Unable to locate Spring NamespaceHandler for XML schema namespace 【发布时间】:2013-10-25 15:55:57 【问题描述】:我一遍又一遍地收到此错误:
10:37:21,270 错误 DispatcherServlet:466 - 上下文初始化失败 org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:找不到 XML 模式命名空间的 Spring NamespaceHandler [http://activemq.apache.org/schema/core] 违规资源:ServletContext资源[/WEB-INF/mvc-dispatcher-servlet.xml]
我尝试了很多 pom.xml 和 spring 配置,但到目前为止都没有工作。
这是我的 pom.xml 中的依赖项:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>$spring.version</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>$spring.version</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>$spring.version</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>$spring.version</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>$spring.version</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.2.6.Final</version>
</dependency>
<dependency>
<groupId>com.networkwatcher</groupId>
<artifactId>NetworkWatcherJMS</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
这是我的 servlet 配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.8.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.networkwatcher"/>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>
<amq:connectionFactory id="amqConnectionFactory" brokerURL="http://192.168.0.105:9090/nw/message" />
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<constructor-arg ref="amqConnectionFactory" />
<property name="sessionCacheSize" value="100" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg ref="connectionFactory"/>
</bean>
<bean id="messageReceiver" class="com.networkwatcher.MessageReceiver" />
<jms:listener-container concurrency="1" >
<jms:listener id="queueReceiver" destination="signal" ref="messageReceiver" />
</jms:listener-container>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/Views/"/>
<property name="suffix" value=".jsp"/>
</bean>
谁能告诉我们这里出了什么问题以及如何解决?
【问题讨论】:
【参考方案1】:您缺少 activemq-spring 的条目
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.8.0</version>
</dependency>
【讨论】:
对于 activemq.apache.org/schema/core 命名空间,处理程序类是 org.apache.xbean.spring.context.v2.XBeanNamespaceHandler。我想一旦你的类路径中有 xbean-spring jar,那么这个问题就会得到解决。 @mattis:你解决了吗?我面临着类似的问题。 你的类路径上也有 xbean-spring 吗? 就是这样。如果您只使用带有 activemq-core、java-jms 和 spring-jms 的配置,那么从现在开始您将不得不包含这个配置。我猜他们从 spring-jms 中删除了这个依赖,所以你必须手动包含这个。 我建议将此答案扩展为包括您还需要 xbean 依赖项【参考方案2】:我不知道为什么,但是 maven 没有下载依赖项,但是它们是在 pom.xml 中指定的。在命令提示符下创建mvn clean
解决了这个问题。
【讨论】:
以上是关于Spring,JMS - 无法找到 XML 模式命名空间的 Spring NamespaceHandler的主要内容,如果未能解决你的问题,请参考以下文章
错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”
错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”
错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”
Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit
Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit
使用 spring 4 获取“无法找到 XML 模式命名空间 [http://www.springframework.org/schema/security] 的 Spring NamespaceHa