我尝试使用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
答案 0 :(得分:12)
根据this,cxf&gt;不再需要此文件。 2.4.x的。
答案 1 :(得分: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 config中包含以下3行(当我无法在任何地方找到这些文件时) - < / p>
<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"/>
答案 2 :(得分:1)
尝试删除导入cxf-extension-jaxrs-binding.xml的行。 其他2个xml文件位于cxf-X.Y.Z.jar中。 对我来说是cxf-2.7.7.jar。
答案 3 :(得分: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>
答案 4 :(得分:0)
在applicationContext.xml中,在cxf 3.1.10中注释掉下面的导入对我有用。 import resource =&#34; classpath:META-INF / cxf / cxf-extension-jaxrs-binding.xml