我试图在Eclipse中使用Spring's Schema Based AOP Support,并且尝试在Tomcat中加载配置时遇到错误。
Eclipse中没有错误,并且自动完成功能对于aop命名空间正常工作,但是当我尝试将项目加载到eclipse中时,出现以下错误:
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)文档的根元素不是。
其次是:
严重:StandardWrapper.Throwable
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:/WEB-INF/beans.xml中XML文档中的第39行无效;嵌套的异常是org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配的通配符是严格的,但是找不到元素'aop:config'的声明。
由以下原因引起:org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配的通配符是严格的,但是找不到元素'aop:config'的声明。
基于此,当Tomcat解析bean.xml文件时,似乎没有读取该架构,导致无法识别<aop:config>
元素。
我的beans.xml文件如下:
<?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>
我的
<aop:config>
文件中的beans.xml
元素已从Spring website复制粘贴,以尝试删除任何可能的错误源谁能阐明发生此错误的原因以及如何解决该错误?
最佳答案
检查您的Web应用程序的WEB-INF / lib文件夹中是否有Spring AOP jar(spring-aop.jar)。
该jar包含指定的XSD。