8

我正在尝试使用 CXF 2.6.0 和 spring 2.5.6 开发 REST Web 服务,我在 pom.xml 中的 CXF maven 依赖项是:

<dependency>
  <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-extension-providers</artifactId>
  <version>2.6.0</version>
   </dependency>

<dependency>
  <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-extension-search</artifactId>
  <version>2.6.0</version>
</dependency>

我正在使用 Spring 2.5.6,并且我已经在 applicationcontext.xml spring 文件中声明了我的 Web 服务:

<jaxrs:server id="restContainer" address="/sav">
    <jaxrs:serviceBeans>
        <ref bean="wssav"/>
    </jaxrs:serviceBeans>
</jaxrs:server>

 <import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

我已经通过以下代码将我的 Web 服务声明为 web.xml 文件:

<servlet>
    <servlet-name>CXFServlet</servlet-name>

    <servlet-class>
        org.apache.cxf.transport.servlet.CXFServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

当我在 tomcat 上部署我的项目时,我在 applicationcontext.xml 文件中的第二个导入文件中遇到了这个异常:

    java.io.FileNotFoundException: class path resource [META-INF/cxf/cxf-extension-jaxrs-binding.xml] cannot be opened because it does not exist 
4

5 回答 5

12

据此,cxf > 2.4.x 不再需要此文件

于 2012-05-23T14:13:30.660 回答
1

Try removing the line that imports cxf-extension-jaxrs-binding.xml. The other 2 xml files are in the cxf-X.Y.Z.jar. For me that is cxf-2.7.7.jar.

于 2013-10-06T07:49:25.137 回答
1

我也得到了完全相同的错误。我得到的错误是 -

IOException parsing XML document from class path resource [META-INF/cxf/cxf-extension-jaxrs-binding.xml]; 
nested exception is java.io.FileNotFoundException: 
class path resource [META-INF/cxf/cxf-extension-jaxrs-binding.xml] cannot be opened because it does not exist.

即使我读到更新版本的 cxf 除了cxf-rt-frontend-jaxrs之外不需要任何东西。收到这些错误后,我在我的 pom 文件中添加了以下依赖项,但它们没有帮助 -

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-extension-providers</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-extension-search</artifactId>
    <version>2.6.2</version>
</dependency>

我也不明白为什么几乎所有详细说明使用 CXF 构建 REST 服务的步骤的教程都希望您在 spring 配置中包含以下 3 行的原因(当我无法在任何地方找到这些文件时) -

<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
于 2013-04-24T14:28:18.657 回答
0

文件 META-INF/cxf/cxf-extension-jaxrs-binding.xml 在以下工件中可用。

<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.2.7</version>
于 2017-05-11T11:20:42.413 回答
0

在 applicationContext.xml 中,注释掉以下导入在 cxf 3.1.10 中对我有用。导入资源="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml

于 2017-07-07T18:59:45.383 回答