CXF Restful 服务端编程
来源:互联网 发布:车牌照识别 c语言 编辑:程序博客网 时间:2024/06/06 09:46
Apache CXF 是一个开源的 Services 框架,继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持
Spring与CXF集成
Spring 提供了灵活的依赖注入机制(DI),实现了 IoC (Inversion of Control 控制反转)。用户可顺利接入以前的业务逻辑,并将它们发布成 Restful 的服务。
1、资源类
资源分为根资源和子资源。根资源至少使用一个 @Path 标签。本次实验的CustomerService就为一个根资源类,服务端可以有多个根资源类,例如新建一个Hello.java, 具有SayHello() 远程服务
package demo.jaxrs.server;import javax.ws.rs.Consumes;import javax.ws.rs.FormParam;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.QueryParam;@Path("/helloservice/")@Produces("text/html")public class Hello {@GET@Path("/{username}/")@Consumes("text/plain")@Produces("text/plain")public String sayHello(@PathParam("username") String userName) { return "hello " + userName;}@GET@Path("/{username}/girlfriend")@Produces("text/plain")public String girlFriend(@PathParam("username") String userName, @QueryParam("")Customer user) { return "hello " + userName + ": your's gf is " + user.getName();}@POST@Path("/{username}/girlfriend")@Produces("text/plain")public String girlFriendPost(@PathParam("username") String userName, @FormParam("") Customer user ) { return "hello " + userName + ": your's gf is " + user.getName();}}
<jaxrs:server id="customerService" address="/service1"> <jaxrs:serviceBeans> <ref bean="customerBean" /> <ref bean="helloBean" /> </jaxrs:serviceBeans> <!-- 引入json 输入/输出支持 --> <jaxrs:providers> <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/> <bean class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"/> </jaxrs:providers> </jaxrs:server> <bean id="customerBean" class="demo.jaxrs.server.CustomerService" /> <bean id="helloBean" class="demo.jaxrs.server.Hello" />
2、@Path标签
@Path(“/helloservice/”)表示 根URI 路径,其他的远程服务前的@Path标签代表相对URI路径,如@Path("/{username}/")
@PathParam 就是从 @path 中用 {} 模板抽取的变量。
1). 在浏览器输入 http://localhost:8080/service1/helloservice/sysu 运行结果如下:
其中,"service1" 表示的是服务器address, 这个是在beans.xml中设置的,"helloservice"代表根URI,"sysu"作为参数,
{} 模板将其抽取赋给"username",因此远程服务中"userName"参数的值就为"sysu"
还有其他参数注解标签:@QueryParam 就是从 QueryString 或 Form 中的变量。@FormParam 从 POST 的表单中获取参数。
2). 在浏览器输入 http://localhost:8080/service1/helloservice/sysu/girlfriend?id=123&name=hn 运行结果如下:
该请求调用Hello的第二个服务,"sysu/girlfriend" 作为远程服务的URI,"id=123&name=hn" 属于QueryString ,系统自动将其转化成Customer类,传给远程服务的"user"参数,因此服务器会返回上述文本
3). 使用curl工具,向服务器发送POST请求
原理与@QueryParam类似,只不过是通过POST方法,参数在后面输入
2、@Produces @Consumes 标签
@Produces用于指定输出格式,参数可以是字符串数组。@Consumes指定处理输入媒体的类型,作用方式与@Produces类似
5种媒体类型:
text/plain 纯文本
text/html 网页
application/json JSON格式
application/xml XML格式
application/javascript 脚本
实验案例访问 http://localhost:8080/service1/customerservice/customers/123, 会输出xml格式的文本,但是修改@produce标签可以支持Json格式
输出如下:
- CXF Restful 服务端编程
- CXF框架的restful webservice 环境配置(一) 服务端
- CXF采用HttpClient实现基本的RESTFul应用之服务端
- CXF 创建 Restful (1) :
- CXF Restful 返回xml
- CXF发布restful接口
- Spring CXF Restful
- CXF restful springmvc+mybatis
- CXF接口服务端开发
- CXF-HelloWorld-服务端
- services-cxf 服务端
- cxf实现webservice服务端
- Spring实现CXF服务端
- spring集成CXF服务端
- CXF WebService 服务端开发
- java restful 服务端搭建
- CodeIgniter RESTful 服务端
- 使用CXF开发RESTFul服务
- question: student_link
- JavaWeb ServletContext/application初试总结
- 你所不知道的“三个数从大到小的顺序输出”之—对if (else)条件语句的运用。
- Matlab Robotic Toolbox V9.10工具箱(三):轨迹规划
- Linux 双Python 环境 踩坑记录
- CXF Restful 服务端编程
- 树莓派学习笔记-按键控制LED灯-WiringPi
- react native 开发工具vscode
- Linux常用命令详解(六)_网络
- Flink HA 高可用 Standalone Cluster High Availability
- QT的信号与槽机制
- 工程管理器make的使用(复习)
- MySQL 连接
- 搬运,Latex符号