REST CXF and Spring cxf-extension-jaxrs-binding File not fou



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

<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,并且我已经在应用程序上下文中声明了我的 Web 服务.xml Spring 文件:

<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 上部署我的项目时,我在应用程序上下文中导入的第二个文件.xml文件收到此异常:

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

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

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

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"/>

尝试删除导入 cxf-extension-jaxrs-binding.xml 的行。其他 2 个 xml 文件位于 cxf-X.Y.Z.jar 中。对我来说,这是cxf-2.7.7.jar。

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

<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.2.7</version>

在应用程序上下文.xml中,注释掉以下导入在 cxf 3.1.10 中对我有用。import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml

最新更新