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

本文共 7553 字,大约阅读时间需要 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的路径 直接访问提供服务的方法

转载地址:http://ekhzo.baihongyu.com/

你可能感兴趣的文章
centos 7 部署LDAP服务
查看>>
揭秘马云帝国内幕:马云的野心有多大
查看>>
iOS项目分层
查看>>
一个action读取另一个action里的session
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
DynamoDB Local for Desktop Development
查看>>
用javascript验证哥德巴赫猜想
查看>>
Shell编程-环境变量配置文件
查看>>
[Unity3d]DrawCall优化手记
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
p2:千行代码入门python
查看>>
bzoj1106[POI2007]立方体大作战tet*
查看>>
spring boot configuration annotation processor not found in classpath问题解决
查看>>
团队项目测试报告与用户反馈
查看>>
对软件工程课程的期望
查看>>
Mysql中文字符串提取datetime
查看>>
由中序遍历和后序遍历求前序遍历
查看>>
我学习参考的网址
查看>>