独立spring应用程序中的cxf webservice

时间:2010-11-03 09:01:38

标签: java spring cxf

我尝试在现有的独立spring应用程序中实现web服务。

我配置了弹簧:

<?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:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">


    <import resource="classpath:beans/webservice.xml" />

...

webservice.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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">


<bean id="CheckService" class="test.ws.CheckService">
</bean>

<jaxws:endpoint 
    id="checkService" 
    implementor="#CheckService"
    address="http://localhost:9000/CheckService" />

我根据官方文档和书籍样本进行了配置。我得到例外:

03/11/2010 09:34:12 WARN Ignored XML validation warning
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://cxf.apache.org/schemas/jaxws.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
        at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
        at org.apache.xerces.util.ErrorHandlerWrapper.warning(Unknown Source)

...

可以从浏览器访问

http://cxf.apache.org/schemas/jaxws.xsd,我认为它已经很好地形成了(官方的xsd)。

我怀疑这个问题与cxf而不是与swing配置有关。

谢谢,

Hubidubi

5 个答案:

答案 0 :(得分:0)

这意味着在运行它时无法访问该URL。当我们在没有互联网连接的情况下启动struts / tiles应用程序时,会发生这种情况。您可以选择下载xsd并将其放在应用程序可以读取的位置。

并将http://cxf.apache.org/schemas/jaxws.xsd替换为/path/to/file/jaxws.xsd

答案 1 :(得分:0)

您是否处于需要设置代理才能访问网络的环境中? 您已在浏览器中设置代理,因此可以通过浏览器访问.xsd。

您需要适当地设置IDE或设置系统范围的代理。

希望我猜对了:p

答案 2 :(得分:0)

最后我想出了决议。我不得不向maven pom.xml添加适当的依赖项。

答案 3 :(得分:0)

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.2</version>
    </dependency>

对我而言是这样的。

答案 4 :(得分:0)

清除Eclipse缓存中的文件为我解决了这个问题。

在Eclipse首选项中,我转到常规&gt;网络连接&gt;缓存并删除导致问题的cxf文件。下次验证文件时,错误消失了。