为什么Tomcat加载时Spring AOP XML schema没有正确加载'读取 beans.xml [英] Why isn't the Spring AOP XML schema properly loaded when Tomcat loads & reads beans.xml

查看:39
本文介绍了为什么Tomcat加载时Spring AOP XML schema没有正确加载'读取 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;amp;#39;读取 beans.xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆