为什么Tomcat加载时Spring AOP XML schema没有正确加载'读取 beans.xml [英] Why isn't the Spring AOP XML schema properly loaded when Tomcat loads & reads beans.xml
问题描述
我正在尝试使用 Spring 的架构基于 Eclipse 中的 AOP 支持,尝试在 Tomcat 中加载配置时出现错误.
I'm trying to use Spring's Schema Based AOP Support in Eclipse and am getting errors when trying to load the configuration in Tomcat.
Eclipse 中没有错误并且自动完成功能对于 aop 命名空间正常工作,但是当我尝试将项目加载到 Eclipse 中时,我收到此错误:
There are no errors in Eclipse and auto-complete works correctly for the aop namespace, however when I try to load the project into eclipse I get this error:
09:17:59,515 WARN XmlBeanDefinitionReader:47 - 忽略 XML 验证警告org.xml.sax.SAXParseException: schema_reference.4: 无法读取架构文档http://www.springframework.org/schema/aop/spring-aop-2.5.xsd",因为 1) 找不到文档;2) 无法读取文件;3) 文档的根元素不是 .
09:17:59,515 WARN XmlBeanDefinitionReader:47 - Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/aop/spring-aop-2.5.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not .
关注:
严重:StandardWrapper.Throwableorg.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:来自/WEB-INF/beans.xml 的 XML 文档中的第 39 行无效;嵌套异常为 org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: 匹配的通配符是严格的,但找不到元素aop:config"的声明.
SEVERE: StandardWrapper.Throwable org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 39 in XML document from /WEB-INF/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 'aop:config'.
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: 匹配的通配符是严格的,但找不到元素aop:config"的声明.
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 'aop:config'.
基于此,Tomcat解析beans.xml文件时似乎没有读取schema,导致无法识别
元素.
Based on this, it seems the schema is not being read when Tomcat parses the beans.xml file, leading to the <aop:config>
element not being recognised.
我的beans.xml文件如下:
My beans.xml file is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!--import resource="classpath:META-INF/cxf/cxf.xml" /-->
<!--import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /-->
<!--import resource="classpath:META-INF/cxf/cxf-servlet.xml" /-->
<!-- NOTE: endpointName attribute maps to wsdl:port@name & should
be the same as the portName attribute
in the @WebService annotation on the IWebServiceImpl class -->
<!-- NOTE: serviceName attribute maps to wsdl:service@name & should be
the same as the serviceName attribute in the @WebService
annotation on the ASDIWebServiceImpl class -->
<!-- NOTE: address attribute is the actual URL of the web service
(relative to web app location) -->
<jaxws:endpoint
xmlns:tns="http://iwebservices.ourdomain/"
id="iwebservices"
implementor="ourdomain.iwebservices.IWebServiceImpl"
endpointName="tns:IWebServiceImplPort"
serviceName="tns:IWebService"
address="/I"
wsdlLocation="wsdl/I.wsdl">
<!-- To have CXF auto-generate WSDL on the fly, comment out the above wsdl
attribute -->
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
</jaxws:endpoint>
<aop:config>
<aop:aspect id="myAspect" ref="aBean">
</aop:aspect>
</aop:config>
</beans>
我的 beans.xml
文件中的
元素是从 Spring 网站 尝试删除任何可能的错误来源
The <aop:config>
element in my beans.xml
file is copy-pasted from the Spring website to try and remove any possible source of error
任何人都可以解释为什么会发生此错误以及我可以做些什么来修复它?
推荐答案
检查您的 web 应用程序的 WEB-INF/lib 文件夹中是否有 Spring AOP jar (spring-aop.jar).
Check that you have the Spring AOP jar (spring-aop.jar) in the WEB-INF/lib folder of your webapp.
那个 jar 包含指定的 XSD.
That jar contais the specified XSD.
这篇关于为什么Tomcat加载时Spring AOP XML schema没有正确加载&amp;#39;读取 beans.xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!