简单使用CXF实现webserver(rs的独立发布)
简单使用cxf_rs的方式实现webserver
1创建maven project java项目
2,在maven文件中导入相关依赖
<dependencies> <!--使用 CXF 的RS开发模式 --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxrs</artifactId><version>3.1.7</version></dependency> <!-- 内置jetty 的 WEB服务器--><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>3.1.1</version></dependency><!-- 使用日志 --><dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId><version>1.7.12</version></dependency></dependencies>
2.创建实体类 Car
package cn.test.cxf.domain;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "Car") //指定序列化(转换 XML、JSON) 对象名字 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;}@Overridepublic String toString() {return "Car [id=" + id + ", carName=" + carName + ", price=" + price + "]";}}
3.创建实体类User
package cn.test.cxf.domain;import java.util.ArrayList; import java.util.List;import javax.xml.bind.annotation.XmlRootElement;@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;}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", city=" + city + ", cars=" + cars + "]";}}
4.编写Service
package cn.test.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.test.cxf.domain.User;
@Path("/userService") @Produces("*/*") public interface IUserService {@POST@Path("/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")@Produces({ "application/xml", "application/json" })public User finUserById(@PathParam("id") Integer id);@DELETE@Path("/user/{id}")@Consumes("application/xml")public void deleteUser(@PathParam("id") Integer id); }
5.编写service实现类,实现service中的方法
package cn.test.cxf.service;import java.util.ArrayList; import java.util.List;import cn.test.cxf.domain.Car; import cn.test.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);}}
6.编写服务器端发布项目
package cn.test.cxf.server;import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;import cn.test.cxf.domain.Car; import cn.test.cxf.domain.User; import cn.test.cxf.service.IUserService; import cn.test.cxf.service.UserServiceImpl;public class Rs_server {public static void main(String[] args) {IUserService userService = new UserServiceImpl();JAXRSServerFactoryBean jaxrsServerFactoryBean=new JAXRSServerFactoryBean();jaxrsServerFactoryBean.setResourceClasses(User.class,Car.class);jaxrsServerFactoryBean.setServiceBean(userService);//设置访问地址jaxrsServerFactoryBean.setAddress("http://localhost:9996");//发布服务 jaxrsServerFactoryBean.create();} }
7.编写客户端程序
首先需要导入cxf-rt-rs-client客户端依赖
导入相关依赖
<dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-rs-client</artifactId><version>3.1.7</version></dependency>
创建客户端程序
package cn.test.cxf.server;import java.util.Collection;import javax.ws.rs.core.MediaType;import org.apache.cxf.jaxrs.client.WebClient;import cn.test.cxf.domain.User;public class ClientTest {public static void main(String[] args) {Collection<? extends User> collection = WebClient.create("http://localhost:9996/userService/user").accept(MediaType.APPLICATION_XML).getCollection(User.class);System.out.println(collection);//添加用户User user = new User();WebClient.create("http://localhost:9996/userService/user").type(MediaType.APPLICATION_XML).post(user);} }
测试完成输出结果是:
[User [id=1, username=小明, city=北京, cars=[Car [id=101, carName=保时捷, price=1000000.0], Car [id=102, carName=宝马, price=400000.0]]], User [id=2, username=小丽, city=上海, cars=[]]]
END!
:-D!
转载于:https://www.cnblogs.com/johnny-ylp/p/7828075.html
简单使用CXF实现webserver(rs的独立发布)相关推荐
- java cxf服务端_webservice概述及cxf在Java开发中应用(二) 简单搭建cxf服务端
首先我们下载cxf的jar包,我这里下载的是apache-cxf-3.0.4这个版本,目前最新的. Eclipse里面新建一个Java project,在工程中引入需要的jar: 这些包里面包含了je ...
- webservice 之 Java CXF实战效果 RS WS(二)
为什么80%的码农都做不了架构师?>>> 两种实现第一种RS 定义接口类 public interface ExampleRestfulI {/*** url:http://l ...
- Python开发一个APP居然如此之简单?老王自学三月就独立开发了!
很久很久之前我就想开发一款app玩一下,不过因为不是很熟悉Java,也没有开发app的经验,因此一直没去弄.最近学了python就想用它开发一个app,google查找之后发现路子还是很多的,现在也有 ...
- 使用Apache cxf 和Spring在Tomcat下发布Webservice指南
转载 http://blog.csdn.net/zhangzhaokun/article/details/4750021 最近学习了如何使用apache cxf和Spring发布webservice, ...
- pb的webserver增加的方法发布后没有显示_Egret 5.3 正式发布,为重度小游戏开发带来新技能...
各位开发者好,白鹭引擎团队今天发布2020年最大的一次更新:Egret5.3版本.由于白鹭引擎团队在2019年已经针对部分开发者提供过内部的5.3.x 版本,所以本次更新的版本号为 5.3.5. 根据 ...
- 安全预警:独立发布的Oracle严重 CVE-2018-3110 公告
在 2018年8月10日,Oracle 独立的发送了一封"安全警告"邮件给所有的 Oracle 用户,这封邮件的标题是:Oracle Security Alert for CVE- ...
- Hinton独立发布44页论文火爆社区,没有实验:给你们个idea,自己去试吧
机器之心 来源:机器之心编辑部 深度学习推动了 AI 领域成为目前最热门的学科,但引领这一风潮的先驱者,如 Geoffrey Hinton,正期待对神经网络进行大刀阔斧的修改,让 AI 能力实现新的真 ...
- Hinton独立发布44页论文火爆社区!没有实验:给你们个idea,自己去试吧
点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 本文转载自:机器之心 深度学习推动了 AI 领域成为目前最热门的学科,但引领这一风潮的先驱者, ...
- 华为mate 30rs保时捷安装鸿蒙系统,华为Mate30 RS保时捷版本发布:加入高档机身工艺,标配5G功能...
每年的华为Mate系列旗舰手机都会有一款保时捷定制版,今年的Mate30也不例外. 就在9月19日晚,华为Mate30系列正式在德国慕尼黑发布,现场不仅展示了这款华为Mate30系列手机的精美外形,与 ...
最新文章
- python基础知识-11-函数装饰器
- 安卓自定义View进阶-Matrix Camera
- ad策略下发_组策略--下发文件到计算机
- EveryNote使用说明,好用的文件备注搜索工具
- 说一说ffmpeg到处都在使用的ff_thread_once函数
- 两台服务器实现会话共享
- JBoss BRMS复杂事件处理(CEP)性能基准
- 高级IO--1 ---(五种典型IO,阻塞IO,非阻塞IO,信号驱动IO,异步IO, IO多路转接)
- python selenium-9 grid模式
- unity shader base pass and additional pass
- 快速上手OSS图片视频上传
- JavaScript-时区
- java实现正态分布累积分布,标准正态分布变量的累积概率分布函数
- 网口压线顺序_网线水晶头接法口诀顺序及接法详细步骤
- 制作一款app系统软件大概需要多少钱
- 二维导热问题的ADI-TDMA算法
- vconsole 轻松实现移动端调试
- Python:实现ternary search三元搜索算法(附完整源码)
- 3.抽象类:什么是抽象类???抽象类的特点有哪些???
- XDOJ 235-月份判断