1.建立mavenjava项目

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast.maven</groupId>
<artifactId>cxf_rs_HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cxf_rs_HelloWorld</name> <dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.0.1</version>
</dependency> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.0.1</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.0.1</version>
</dependency> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>3.0.1</version>
</dependency> <dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
</project>

pom.xml

 ### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=info, stdout

log4j-properties

2.创建实体类和服务接口

 package cn.itcast.cxf.domain;

 import javax.xml.bind.annotation.XmlRootElement;

 @XmlRootElement(name = "Car")
public class Car {
private Integer id;
private String carName;
private Double price; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getCarName() {
return carName;
} public void setCarName(String carName) {
this.carName = carName;
} public Double getPrice() {
return price;
} public void setPrice(Double price) {
this.price = price;
} @Override
public String toString() {
return "Car [id=" + id + ", carName=" + carName + ", price=" + price + "]";
} }

Car

 package cn.itcast.cxf.domain;

 import java.util.ArrayList;
import java.util.List; import javax.xml.bind.annotation.XmlRootElement;
//指定序列化(转换xml或json)对象的名字
@XmlRootElement(name = "User")
public class User {
private Integer id;
private String username;
private String city; private List<Car> cars = new ArrayList<Car>(); public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public List<Car> getCars() {
return cars;
} public void setCars(List<Car> cars) {
this.cars = cars;
} @Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", city=" + city + ", cars=" + cars + "]";
} }

User

 package cn.itcast.cxf.service;

 import java.util.List;

 import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces; import cn.itcast.cxf.domain.User; @Path("/userService")//服务访问资源路径
@Produces("*/*")生成(返回值)可以不写
public interface IUserService { @POST
@Path("/user")///userService/user
@Consumes({ "application/xml", "application/json" }) //消费(客户端传过来的数据,即接受的数据)
public void saveUser(User user); @PUT
@Path("/user")
@Consumes({ "application/xml", "application/json" })
public void updateUser(User user); @GET
@Path("/user")
@Produces({ "application/xml", "application/json" })//产生(返回到客户端的数据的格式)
public List<User> findAllUsers(); @GET
@Path("/user/{id}")
@Consumes("application/xml")
public User finUserById(@PathParam("id") Integer id); @DELETE
@Path("/user/{id}")
@Consumes("application/xml")
public void deleteUser(@PathParam("id") Integer id);
}

IUservice

 package cn.itcast.cxf.service;

 import java.util.ArrayList;
import java.util.List; import cn.itcast.cxf.domain.Car;
import cn.itcast.cxf.domain.User; public class UserServiceImpl implements IUserService { public void saveUser(User user) {
System.out.println("save user:" + user);
} public void updateUser(User user) {
System.out.println("update user:" + user);
} public List<User> findAllUsers() {
List<User> users = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setUsername("小明");
user1.setCity("北京"); List<Car> carList1 = new ArrayList<Car>();
Car car1 = new Car();
car1.setId(101);
car1.setCarName("保时捷");
car1.setPrice(1000000d);
carList1.add(car1);
Car car2 = new Car();
car2.setId(102);
car2.setCarName("宝马");
car2.setPrice(400000d);
carList1.add(car2);
user1.setCars(carList1); users.add(user1); User user2 = new User();
user2.setId(2);
user2.setUsername("小丽");
user2.setCity("上海");
users.add(user2); return users;
} public User finUserById(Integer id) {
if (id == 1) {
User user1 = new User();
user1.setId(1);
user1.setUsername("小明");
user1.setCity("北京");
return user1;
}
return null;
} public void deleteUser(Integer id) {
System.out.println("delete user id :" + id);
} }

UserviceImpl

@GET 查询 @PUT 修改 @POST 增加 @DELETE 删除

3.发布服务

 package cn.itcast.cxf.rs.server;

 import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; import cn.itcast.cxf.domain.Car;
import cn.itcast.cxf.domain.User;
import cn.itcast.cxf.service.IUserService;
import cn.itcast.cxf.service.UserServiceImpl; public class RS_Server {
public static void main(String[] args) {
IUserService userService = new UserServiceImpl(); JAXRSServerFactoryBean restServer = new JAXRSServerFactoryBean();
restServer.setResourceClasses(User.class, Car.class);
restServer.setServiceBean(userService);
restServer.setAddress("http://localhost:9999/"); // 打印日志
restServer.getInInterceptors().add(new LoggingInInterceptor());
restServer.getOutInterceptors().add(new LoggingOutInterceptor()); restServer.create();
}
}

Server

4.客户端程序的编写Webclient工具类使用

 package cn.itcast.cxf.rs.client;

 import java.util.Collection;

 import javax.ws.rs.core.MediaType;

 import org.apache.cxf.jaxrs.client.WebClient;

 import cn.itcast.cxf.domain.User;

 public class RS_Client {
public static void main(String[] args) {
User user = new User();
user.setId(3);
user.setUsername("小美");
user.setCity("深圳"); // 根据id查询
WebClient client = WebClient.create("http://localhost:9999/");
User responseUser = client.path("userService/user/1").accept(MediaType.APPLICATION_XML).get(User.class);
System.out.println(responseUser); // 增加
WebClient.create("http://localhost:9999/").path("userService/user").accept(MediaType.APPLICATION_XML)
.post(user); // 修改
WebClient.create("http://localhost:9999/").path("userService/user").type(MediaType.APPLICATION_JSON).put(user); // 删除
WebClient.create("http://localhost:9999/").path("userService/user/1").accept(MediaType.APPLICATION_XML)
.delete(); // 查询所有用户
Collection<? extends User> users = WebClient.create("http://localhost:9999/").path("userService/user")
.accept(MediaType.APPLICATION_JSON).getCollection(User.class);
System.out.println(users);
}
}

Client

WebService 之CXF(rs)之HelloWorld的更多相关文章

  1. CXF学习(2) helloworld

    0.新建一个项目取名wsserver. pom.xml 文件如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...

  2. WebService之CXF注解报错(一)

    WebService之CXF注解 1.详细报错例如以下 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] ...

  3. WebService它CXF注释错误(两)

    WebService它CXF注解 1.详细报错例如以下 五月 04, 2014 11:24:12 下午 org.apache.cxf.wsdl.service.factory.ReflectionSe ...

  4. WebService之CXF注解报错(三)

    WebService之CXF注解 1.具体错误如下 五月 04, 2014 11:29:28 下午 org.apache.cxf.wsdl.service.factory.ReflectionServ ...

  5. WebService之CXF注解报错(二)

    WebService之CXF注解 1.具体报错如下 五月 04, 2014 11:24:12 下午 org.apache.cxf.wsdl.service.factory.ReflectionServ ...

  6. 转载 WebService 的CXF框架 WS方式Spring开发

    WebService 的CXF框架 WS方式Spring开发   1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0 ...

  7. 【WebService】WebService之CXF和Spring整合(六)

    前面介绍了WebService与CXF的使用,项目中我们经常用到Spring,这里介绍CXF与Spring整合 步骤 1.创建一个Maven Web项目,可以参照:[Maven]Eclipse 使用M ...

  8. 转-JAVA webservice之CXF 范例--http://cxshun.iteye.com/blog/1275408

    JAVA webservice之CXF 博客分类: j2ee相关 昨天我们一起学习了一下xfire,今天我们来看一下CXF,为什么学完那个接着学这个呢.因为CXF是在xfire的基础上实现 的,所以我 ...

  9. Webservice与CXF框架快速入门

    1. Webservice Webservice是一套远程调用技术规范 远程调用RPC, 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化 ...

随机推荐

  1. shell 语法

    1). 条件表达式语法信息    [ 1 -eq 1 ] && echo 1        <-- 表示条件成功,执行相应操作    [ 1 -eq 1 ] || echo 1  ...

  2. elastic 常用查询操作

    _ GET      http://127.0.0.1:9200/_cat/health?v  健康状况 GET      http://127.0.0.1:9200/_cat/indices?v  ...

  3. drupal 7 安装失败后的补救办法

    在安装 drupal 7 时安装,导入数据库已经成功,但是在安装语言包的时候卡住了,没有进行最后三步,管理员帐号没能启用.此时我退出安装,访问网站,没有问题.但是管理员admin的密码没有设置,以至于 ...

  4. Docker的学习笔记(开发的技术分享转发)

    我的Docker学习记录一.安装dockeryum install -y docker-io二.使用docker1.下载镜像docker pull <image>2.查询镜像docker ...

  5. Java复习之Eclipse快捷键大全

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...

  6. Thrift笔记(五)--Thrift server源码分析

    从(四)server代码跟进 public static void simple(MultiplicationService.Processor processor) { try { TServerT ...

  7. 阿里云服务器Linux常用命令

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  8. vue授权页面登陆之后返回之前的页面

    import Vue from 'vue'import Router from 'vue-router'Vue.use(Router)import home from "@/pages/ho ...

  9. es6变量解构赋值的用途

    这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x ...

  10. jquery控制滚动条

    $(function () { $("table tr td a").css('white-space', 'nowrap'); $("div[id$=ctlScroll ...