1、新建一个java项目

2、导入cxf相关的jar包,并部署到项目中

3、bean类

 package com.xiaostudy;

 import javax.xml.bind.annotation.XmlRootElement;

 /**
* @desc bean类
* @author xiaostudy
*
*/
@XmlRootElement(name = "user")
public class User { private int id;
private String name;
private int age; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} }

4、服务接口

 package com.xiaostudy;

 import java.util.List;

 import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; /**
* @desc 服务器接口
* @author xiaostudy
*
*/
@WebService//表示发布服务
@Path("/user")//类访问数据的路径
public interface Test_service { @GET//访问方式
//"application/json;charset=utf-8"是JSon数据类型,MediaType.APPLICATION_XML是xml数据类型
//两个同时用的话,get访问方式默认是xml数据类型,post默认是JSon数据类型,访问的时候可以自己设置数据类型
@Produces({"application/json;charset=utf-8",MediaType.APPLICATION_XML})
@Path("/getUser/{name}")//方法访问数据的路径,{}表示是参数
public User getUser(@PathParam("name")String name);//设置参数名称 @GET//访问方式
@Produces("application/json;charset=utf-8")//只用JSon数据类型
@Path("/getUserList/{names}")//方法访问数据的路径,{}表示是参数
public List<User> getUserList(@PathParam("names")String... names);//设置参数名称 }

5、服务接口实现类

 package com.xiaostudy;

 import java.util.List;
import java.util.Vector; /**
* @desc 服务器接口实现类
* @author xiaostudy
*
*/
public class Test_serviceImpl implements Test_service { /**
* @desc 处理客户端的数据,并返回数据
* @param name 参数
* @return String 返回数据类型
*/
@Override
public User getUser(String name) {
User user = new User();
user.setId(1111);
user.setName(name);
user.setAge(23);
return user;
} @Override
public List<User> getUserList(String... names) {
List<User> list = new Vector<User>();
for(int i = 0; i < names.length; i++) {
User user = new User();
user.setId(1+i);
user.setName(names[i]);
user.setAge(23+i);
list.add(user);
}
return list;
} }

6、开启服务

 package com.xiaostudy;

 import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; /**
* @desc 开始服务器类
* @author xiaostudy
*
*/
public class MyService { public static void main(String[] args) {
// JaxWsServerFactoryBean发布服务
JAXRSServerFactoryBean jAXRSServerFactoryBean = new JAXRSServerFactoryBean();
// 设置服务实现类
jAXRSServerFactoryBean.setServiceBean(new Test_serviceImpl());
//设置资源类
jAXRSServerFactoryBean.setResourceClasses(Test_serviceImpl.class);
// 设置服务地址
jAXRSServerFactoryBean.setAddress("http://127.0.0.1:9998/test");
// 拦截器
jAXRSServerFactoryBean.getInInterceptors().add(new LoggingInInterceptor());
jAXRSServerFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor()); // 发布服务
jAXRSServerFactoryBean.create(); } }

7、测试是否发布成功,wsdl是w3c标准,wadl是REST的


结合spring整合发布

就是把这java的main发布转到Tomcat服务器上

applicationContext.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"
xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> <!-- <jaxrs:server发布REST的服务 ,对JAXRSServerFactoryBean类封装-->
<jaxrs:server address="/test">
<jaxrs:serviceBeans>
<ref bean="test_serviceImpl"/>
</jaxrs:serviceBeans>
</jaxrs:server> <!-- 配置服务实现类 -->
<bean name="test_serviceImpl" class="com.xiaostudy.Test_serviceImpl"/>
</beans>

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ws_2_cxf_spring_server</display-name> <!-- 设置spring的环境 -->
<context-param>
<!--contextConfigLocation是不能修改的 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 配置CXF的Servlet -->
<servlet>
<servlet-name>CXF</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXF</servlet-name>
<url-pattern>/rs/*</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

访问方式


webservice用cxf发布REST的更多相关文章

  1. So easy Webservice 7.CXF 发布WebService

    (一)使用ServerFactoryBean 方式实现发布WS服务 1.新建项目,添加cxf jar包到项目中 2.编写服务实现类 /** * CXF WebService * 不用注解 * @aut ...

  2. webservice用cxf发布SOAP

    cxf的安装,就是把文件解压,然后配置环境变量 http://cxf.apache.org/download.html这是官网下载 解压到这里 环境变量 wsdl2java命令测试 1.新建java项 ...

  3. Spring集成CXF发布WebService并在客户端调用

    Spring集成CXF发布WebService 1.导入jar包 因为官方下载的包里面有其他版本的sprring包,全导入会产生版本冲突,所以去掉spring的部分,然后在项目根目录下新建了一个CXF ...

  4. 使用CXF发布WebService

    这里普及一下WebService和cxf的知识.关于webservice和cxf:   WebService.各种提供服务的组件     .企业总线.通讯总线(ESB)CXF:是一个SOA框架,Axi ...

  5. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  6. CXF发布restful WebService的入门例子(客户端)

    上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...

  7. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  8. 使用CXF发布WebService服务简单实例

    一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...

  9. [置顶] 利用CXF发布webService的小demo

    其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...

随机推荐

  1. Linux磁盘分区工具的使用

    ----------fdisk分区工具----------   一..下面来介绍fdisk分区工具的命令格式:    fdisk是传统的Linux硬盘分区工具,也是Linux系统中最常用的一种硬盘分区 ...

  2. 解决 Invalid signature file digest for Manifest 问题

    idea打包的jar文件在spark执行是报错: Invalid signature file digest for Manifest 通过以下命令解决: zip -d myjob.jar META- ...

  3. requests+BeautifulSoup详解

    简介 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种 ...

  4. PAT 1145 Hashing - Average Search Time [hash][难]

    1145 Hashing - Average Search Time (25 分) The task of this problem is simple: insert a sequence of d ...

  5. Portal系统中当切换学生时仍旧停留在当前页面的实现方法

    一.BaseController.cs文件 1.OnActionExecuting方法,该方法可以被各子Controller重写 protected override void OnActionExe ...

  6. property函数的使用

    描述 property函数的作用是在新式类中返回属性值 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改 s=Student() s.score= ...

  7. 给idea配置默认的maven

    一.配置Maven环境 1.下载apache-maven文件,选择自己需要的版本,地址: http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/bin ...

  8. Zookeeper那些事

    一. 什么是Zookeeper Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务, ...

  9. hbase(一)

    1.hbase安装参考 http://blog.csdn.net/wild46cat/article/details/53214159 2.遇到的问题: ERROR: The node /hbase ...

  10. Kattis - bank 【简单DP】

    Kattis - bank [简单DP] Description Oliver is a manager of a bank near KTH and wants to close soon. The ...