博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发基于CXF的 RESTful WebService web 项目 webservice发布
阅读量:7078 次
发布时间:2019-06-28

本文共 7607 字,大约阅读时间需要 25 分钟。

 

 

配置步骤

开发基于CXF的 RESTful WebService1.创建Web项目并导入CXF的jar2.在Web.xml中配置 CXFServlet    
cxf
org.apache.cxf.transport.servlet.CXFServlet
cxf
/ws/*
3.创建实体类 Person @XmlRootElement(name = "person") public class Person implements Serializable { private String id; private String name; private String description; @XmlElement(name = "id") public String getId() { return id; } public void setId(String id) { this.id = id; } @XmlElement(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement(name = "description") public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }4.定义 PersonService 接口 //@Produces( { MediaType.APPLICATION_XML }) @Produces( { MediaType.APPLICATION_JSON }) public interface PersonService extends Serializable { @GET @Path("/persons") public List
getPersons(); @GET @Path("/persons/{id}") public Person getPerson(@PathParam("id") String id); }5.提供实现类 PersonServiceImpl public class PersonServiceImpl implements PersonService { private static final long serialVersionUID = 1L; private static Map
ps = new HashMap
(); static { Person info = new Person(); p1.setId("1"); p1.setName("zhangsan"); p1.setDescription("hello"); Person p1 = new Person(); p2.setId("2"); p2.setName("lisi"); p2.setDescription("lisi hehe"); ps.put(p1.getId(), p1); ps.put(p2.getId(), p2); } @Override public Person getPerson(String id) { return ps.get(id); } @Override public List
getPersons() { return new ArrayList(ps.values()); } }6.提供CXF 的配置文件 cxf-servlet.xml
7.访问CXFServlet:http://localhost/CXF_01/ws8.通过 URLConnection 访问WebService服务: URLConnection conn = new URL("http://localhost/CXF_01/ws/v1/persons").openConnection(); HttpURLConnection con = (HttpURLConnection) conn; con.setRequestMethod("GET"); int code = con.getResponseCode(); System.out.println(code); InputStream is = con.getInputStream(); int len = 0; byte[] b = new byte[1024]; StringBuffer sb = new StringBuffer(); while((len = is.read(b)) != -1){ String s = new String(b,0,len,"UTF-8"); sb.append(s); } System.out.println(sb.toString()); con.disconnect();

 

示例配置了

http://i.cnblogs.com/EditPosts.aspx?postid=3806298 之后

 

配置RESTful services服务,注意 概念和 soap wsdl完全不一样的

但也是开服务 webservice

Person.java

1 package cn.itcast.domain; 2  3 import java.io.Serializable; 4  5 import javax.xml.bind.annotation.XmlElement; 6 import javax.xml.bind.annotation.XmlRootElement;   //通过注解,在网上序列号成xml或者json方式 7 @XmlRootElement(name = "Person") 8 public class Person implements Serializable { 9     private String id;10     private String name;11     private String desc;12     @XmlElement(name="id")13     public String getId() {14         return id;15     }16     public void setId(String id) {17         this.id = id;18     }19     @XmlElement(name="name")20     public String getName() {21         return name;22     }23     public void setName(String name) {24         this.name = name;25     }26     @XmlElement(name="desc")27     public String getDesc() {28         return desc;29     }30     public void setDesc(String desc) {31         this.desc = desc;32     }33     @Override34     public String toString() {35         return "Person [desc=" + desc + ", id=" + id + ", name=" + name + "]";36     }37     38     39 }

IPersonService.java

1 package cn.itcast.restful; 2  3 import java.io.Serializable; 4 import java.util.List; 5  6 import javax.ws.rs.GET; 7 import javax.ws.rs.Path; 8 import javax.ws.rs.PathParam; 9 import javax.ws.rs.Produces;10 import javax.ws.rs.core.MediaType;11 12 import cn.itcast.domain.Person;13 //@Produces( { MediaType.APPLICATION_XML })    xml格式,以下是json格式 传14 @Produces( { MediaType.APPLICATION_JSON })15 public interface IPersonService extends Serializable {16     17     @GET18     @Path(value="/persons/{id}")19     public Person findPersonById(20             @PathParam("id")21             String id);22     23     @GET24     @Path(value="/persons")25     public List
findAllPerson();26 }

PersonServiceImpl.java

1 package cn.itcast.restful; 2  3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7  8 import cn.itcast.domain.Person; 9 10 public class PersonServiceImpl implements IPersonService {11     private static Map
ps = new HashMap
();12 static {13 for(int i=0;i<5;i++){14 Person p = new Person();15 p.setId("id" + i);16 p.setName("person" + i);17 p.setDesc("desc" + i);18 ps.put(p.getId(), p);19 }20 }21 @Override22 public List
findAllPerson() {23 24 return new ArrayList
(ps.values());25 }26 27 @Override28 public Person findPersonById(String id) {29 return ps.get(id);30 }31 32 }

 

多加入了 60-71 配置restful方式的webservice

cxf-servlet.xml

1 
2
14
15
16
17
18 19
20 21
22
27
29
30
31
32
33
34
35
36
37 38
39
44
46
47
48
49
50 51
52
53
54
55
56
57
58
59 60
61
62
63
64
65
66
67
68
69
70
71
72
73

web.xml

1 
2
7 8
9
10
contextConfigLocation
11
classpath:cxf-servlet.xml
12
13
14
org.springframework.web.context.ContextLoaderListener
15
16 17
18
19
cxf
20
org.apache.cxf.transport.servlet.CXFServlet
21
22
28
29 30
31
cxf
32
/cxf/*
33
34 35
36
index.jsp
37
38

 

 

发布了之后  ,cxf在上面web.xml中 被过滤处理

通过localhost:8080/项目/cxf  +/persons(接口中的path路径) 访问到 服务器

通过 接口中 path的路径 直接访问提供服务的方法

转载于:https://www.cnblogs.com/friends-wf/p/3806206.html

你可能感兴趣的文章
gitk图形界面中文乱码情况
查看>>
基于ThreadPoolExecutor实现工作引擎参考
查看>>
Go语言的基本数据类型
查看>>
WEB测试:***apache
查看>>
42 个移动端启动页面优化 Tips
查看>>
Egret之ProtoBuf安装
查看>>
Cocos2d-x3.0游戏实例《别救我》目录
查看>>
我的友情链接
查看>>
ASP开发中数据库文件调用的捷径
查看>>
debian启动项与服务设置
查看>>
WinPcap编程环境设置
查看>>
基于openssl的https服务配置
查看>>
从 CentOS 5.5 中精简出属于自己的专属Linux (三)
查看>>
C和指针---第十五章:输入/输出函数
查看>>
Linux打开txt文件乱码的解决方法
查看>>
jquery中的ajax
查看>>
HTML5 Geolocation 地理位置API的使用
查看>>
强大的时间库moment.js常用方法
查看>>
log file sync事件
查看>>
MXNet动手学深度学习笔记:多类别分类
查看>>