3

我正在使用 Spring 框架实现 JAX-WS。

以下是我的 Spring applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://jax-ws.dev.java.net/spring/core
    http://jax-ws.dev.java.net/spring/core.xsd
    http://jax-ws.dev.java.net/spring/servlet
    http://jax-ws.dev.java.net/spring/servlet.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    ">

然而,Eclipse 抱怨:

引用的文件包含错误 ( http://jax-ws.dev.java.net/spring/servlet.xsd )。

查了一下,发现这个网址:http: //jax-ws.dev.java.net/spring/servlet.xsd 不存在。相反,它似乎移至:http: //jax-ws.java.net/spring/servlet.xsd (您可以在浏览器中打开此链接)

因此,我将 XSD 架构 URL 从 http://jax-ws.dev.java.net/spring/servlet.xsd更新 为 http://jax-ws.java.net/spring/servlet.xsd

现在我的 applicationContext.xml 看起来像这样:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://jax-ws.dev.java.net/spring/core
    http://jax-ws.java.net/spring/core.xsd
    http://jax-ws.dev.java.net/spring/servlet
    http://jax-ws.java.net/spring/servlet.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    ">

实际上,随着这种变化,Eclipse 错误消失了。问题是在 Tomcat 7 中启动 Web 服务后,我收到以下运行时错误:

org.xml.sax.SAXParseException;行号:20;列号:29;schema_reference.4:未能读取架构文档' http://jax-ws.java.net/spring/servlet.xsd ',因为1)找不到文档;2) 文件无法读取;3) 文档的根元素不是 . 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.java:99)在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:433)

请指教。

非常感谢你。问候,

4

4 回答 4

7

您的问题是您将位置从http://jax-ws.dev.java.net/spring/servlet.xsd更改为http://jax-ws.java.net/spring/servlet.xsd。尽管后一个是正确的 url,但它与 jaxws-spring.jar META-INF/spring.schema 文件中定义的内容不匹配。该文件应具有以下内容

http\://jax-ws.dev.java.net/spring/core.xsd=spring-jax-ws-core.xsd
http\://jax-ws.dev.java.net/spring/servlet.xsd=spring-jax-ws-servlet.xsd
http\://jax-ws.dev.java.net/spring/local-transport.xsd=spring-jax-ws-local-transport.xsd

Spring 使用此映射来搜索类路径中的模式而不是互联网。这些模式文件位于 jaxws-spring.jar 文件的根目录。

请看一下注册处理程序和架构

于 2013-02-07T05:23:11.033 回答
1

你在你的项目中使用 spring 吗?,我有同样的问题,但是当我在我的 maven 依赖项中包含 spring-jaxws 时,问题解决了,事实上,你可以在那个 jar 中看到 META-INF/spring.schemas 文件是重新定义 XSD 位置

于 2014-02-08T14:18:36.017 回答
1

资源已移动,最终配置应为:

xsi:schemaLocation="http://www.springframework.org/schema/beans        
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://jax-ws.dev.java.net/spring/core 
        http://jax-ws.java.net/spring/core.xsd
        http://jax-ws.dev.java.net/spring/servlet 
        http://jax-ws.java.net/spring/servlet.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"
        default-lazy-init="true">
于 2016-09-07T08:00:42.030 回答
0

可能不是你的情况。但是在这种情况下,请清理并重新构建。如果两个 jar 退出,原因是旧的 spring jar 和 xsd 从那里取出。希望对其他人有所帮助....一般来说,由于多种原因会引发此异常。

于 2013-02-19T17:08:49.820 回答