cxf web servicex- 关于cxf resutful 中出现No resource classes found的问题

问题描述

关于cxf resutful 中出现No resource classes found的问题

用cxf开发restful服务,出现以下问题,希望大家能给予帮助,在此先谢过。

 Caused by: org.apache.cxf.service.factory.ServiceConstructionException
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:219)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1706)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1645)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
    ... 62 more
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: No resource classes found
    at org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:317)
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:159)
    ... 69 more

解决方案

CXF中,出现 No services have been found.
Android出错问题:AndroidManifest.xml:2: error: No resource identifier found for attribute 'installLocatio
error: No resource identifier found for attribute 问题

解决方案二:

我的配置如下:
(1)、web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <!-- B:配置中文编码问题的过滤器 -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- E:配置中文编码问题的过滤器 -->

    <!-- B:配置Spring配置文件的名称和位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:cxf-server.xml
        </param-value>
    </context-param>
    <!-- E:配置Spring配置文件的名称和位置 -->

    <!-- B:启动IOC容器的ServletContextListener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- E:启动IOC容器的ServletContextListener -->

    <!-- B:CXF servlet -->
    <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>
      <!-- 匹配下/services/*的所有请求 -->
      <url-pattern>/services/*</url-pattern>
   </servlet-mapping>
   <!-- E:CXF servlet -->
</web-app>

解决方案三:

(2)、pom.xml

 <?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.github.mervyn</groupId>
    <artifactId>java-learn</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>org.github.mervyn.webServices_CXF_springRestful</groupId>
  <artifactId>java-learn-webServices_CXF_springRestful</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <packaging>war</packaging>
  <name>java-learn-webServices_CXF_springRestful Maven Webapp</name>
  <url>http://maven.apache.org</url>

   <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.2.3.RELEASE</spring.version>
    <cxf.version>3.1.4</cxf.version>
    <jackson.version>1.9.13</jackson.version>
    <jsr311.version>1.1.1</jsr311.version>
    <!-- jetty context path -->
    <jetty.contextPath>java-learn-webServices_CXF_springRestful</jetty.contextPath>
  </properties>

  <dependencies>
   <!-- B:spring依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- E:spring依赖 -->

    <!-- B:cxf依赖 -->
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-extension-providers</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <!-- E:cxf依赖 -->

    <!-- B:javax.ws.rs -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>${jsr311.version}</version>
    </dependency>
    <!-- E:javax.ws.rs -->

    <!-- B:jackson -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-jaxrs</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <!-- E:jackson -->

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>java-learn-webServices_CXF_springRestful</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <encoding>utf8</encoding>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.0.0.v20130308</version>
            <configuration>

                <webApp>
                  <contextPath>/${jetty.contextPath}</contextPath>
                </webApp>
                <!-- 热部署时间 -->
                <scanIntervalSeconds>5</scanIntervalSeconds>
                <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
  </build>

</project>

解决方案四:

(3)、HelloWS接口

 package org.github.mervyn.webServices_CXF_springRestful;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

public interface IHelloWS {

    @GET
    @Path("/HelloWS/{id}")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces({MediaType.APPLICATION_JSON,"text/html; charset=UTF-8"})
    String getUserById(@PathParam("id")int id);
}

解决方案五:

(4)、HelloWSImpl

 package org.github.mervyn.webServices_CXF_springRestful;

import java.io.IOException;
import java.io.StringWriter;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.ObjectMapper;

public class HelloWSImpl implements IHelloWS {

    @Override
    /*@GET
    @Path("/HelloWS/{id}")
    //@Consumes(MediaType.APPLICATION_JSON)
    @Produces({MediaType.APPLICATION_JSON,"text/html; charset=UTF-8"})*/
    public String getUserById(@PathParam("id")int id){
        System.out.println("id为: " + id);
        User user = new User();
        user.setId(id);
        user.setName("mervyn");
         ObjectMapper mapper = new ObjectMapper();
         StringWriter sw = new StringWriter();
         JsonGenerator gen = null;
         try {
             gen = new JsonFactory().createJsonGenerator(sw);
             mapper.writeValue(gen, user);
             gen.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String json = sw.toString();
        return json;
    }

}

解决方案六:

(5)cxf-server.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:context="http://www.springframework.org/schema/context"
    xmlns:core="http://cxf.apache.org/core"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xsi:schemaLocation="http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
        http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">

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

    <bean id="helloWSImpl" class="org.github.mervyn.webServices_CXF_springRestful.HelloWSImpl" />

    <jaxrs:server id="iHelloWS" address="/">
        <jaxrs:serviceBeans>
            <ref bean="helloWSImpl"/>
        </jaxrs:serviceBeans>
    </jaxrs:server>

</beans>

解决方案七:

问题已解决。是因为自己粗心。cxf实现restful风格的web services 接口上写上注解,同时也要在接口的实现类中添加上相应的注解。

时间: 2024-10-30 06:00:40

cxf web servicex- 关于cxf resutful 中出现No resource classes found的问题的相关文章

mule 基于wsdl调用cxf web service

最近看mule的一个文档mule esb 3 concepts,介绍了mule esb的一些基本概念.看完后,对soa,esb,服务等都有了更深的认识.今天试验通过mule进行cxf web service的调用,试了一下午终于成功. 1,首先要有一个已经发布的cxf web service,可以通过mule studio以图形化的方式简单生成config.xml,再写好相应的component class,就是发布用到的接口和pojo类. interface _________________

ASP.NET Web API Selfhost宿主环境中管道、路由

前言 前面的几个篇幅对Web API中的路由和管道进行了简单的介绍并没有详细的去说明一些什么,然而ASP.NET Web API这个框架由于宿主环境的不同在不同的宿主环境中管道中的实现机制和路由的处理方式有着很大的不同,所以我会将对应不同的宿主环境来分别的做出简单的讲解.  ASP.NET Web API路由.管道     ASP.NET Web API 开篇介绍示例     ASP.NET Web API 路由对象介绍     ASP.NET Web API 管道模型     ASP.NET

服务器-浏览自己创建的web网页时,网页中调用的.cgi程序会出错。什么原因?

问题描述 浏览自己创建的web网页时,网页中调用的.cgi程序会出错.什么原因? 每次跳转.cgi程序时都会报错, .cgi文件有C文件编译生成的这是什么原因?程序问题还是服务器问题? 解决方案 502属于服务端问题,提示你CGI不兼容.可以具体看看服务端日志等 解决方案二: http://blog.csdn.net/heibaiyijing/article/details/8538413 解决方案三: 502属于服务端问题,代码导致服务器内部出问题了

web-仅在类定义上有 [ScriptService] 特性的 Web 服务才能从脚本中调用。

问题描述 仅在类定义上有 [ScriptService] 特性的 Web 服务才能从脚本中调用. 仅在类定义上有 [ScriptService] 特性的 Web 服务才能从脚本中调用. 解决方案 在.net3.5中,访问web服务,要对web服务添加修饰:[System.Web.Script.Services.ScriptService] 否则,当.ajax()请求服务时,会有异常:只能从脚本中调用在类定义上有[ScriptService]属性的 Web 服务 解决方案二: 在你的方法前面加上[

我使用WEB,如何在程序中,获取CPU、硬盘、IP地址及其它信息?

问题描述 我使用WEB,如何在程序中,获取CPU.硬盘.IP地址及其它信息? 解决方案 解决方案二:获取Server上的信息?先找到本地命令,能看到这些信息的,然后在程序中用Runtime.exec(去执行这些本地命令.解决方案三:估计他想获得用户的这些信息!如果是这样的话,想都不用想了!解决方案四:IP地址能获取当客户端的其它信息通过java是没办法的不晓得别的技术能行不webstart方式运行的客户端还行web方式的话active插件不晓得可以不(纯粹猜测,没用过)解决方案五:用户的这些信息

javaee-在开发ssh框架的web应用beans.xml文件中出错,求大神解救

问题描述 在开发ssh框架的web应用beans.xml文件中出错,求大神解救 在开发ssh框架的web应用beans.xml文件中出错,求大神解救: 错误::Class 'org.apache.commons.dbcp.BasicDataSource' not found Class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found 1.以下是代码 xmlns:xsi="http://www.w3.or

office web apps如何在Windows2008serverR2中搭建?

问题描述 office web apps如何在Windows2008serverR2中搭建? office web apps如何在Windows2008serverR2中搭建,最好给出软件的下载链接,搭建过程中是否需要安装别的软件? 解决方案 http://blog.sina.com.cn/s/blog_66ff669e0101fd0s.htmlhttp://wenku.baidu.com/link?url=Lce9DXLLqfbJLVa581kB6Cz6eNVVZqwJqUgrXyW3FqC5

y clipse-myeclipse 部署web工程 JSP 在tomcat 中没有发布过去

问题描述 myeclipse 部署web工程 JSP 在tomcat 中没有发布过去 myeclipse 发布web工程 部署到tomcat后 webapps 下的web工程中没有项目的所有 JSP文件 .求大神解决 解决方案 检查一下,你的Tomcat是否在MyEclipse中正确配置,然后看看部署时是否部署的你独立安装的Tomcat,而不是部署到MyEclipse自带的Tomcat了

web前端-WEB前端基础 下列代码中,错误的是()?

问题描述 WEB前端基础 下列代码中,错误的是()? A. 01发票信息 发票抬头: 发票内容: B.发票信息 发票抬头: 发票内容: C.% D. 搜索"恒高科技": 解决方案 web前端基础Web前端基础[WEB基础]⑤一些前端小东西 解决方案二: 你这个是不是有格式的啊? 解决方案三: 我表示看不懂,是不是内容不全啊 相关文章 代码-WEB前端基础 答案为什么是B html-如何才能系统的学习web前端呢 web前端-css遇到十分基础的问题,求解释 web前端框架挑选问题,踊跃