基于rest方式的web service

具体可以参详我的博客:http://www.paisays.com/?p=79

公司跨系统的接口都换成了rest风格,对于没有使用过rest的人真是感觉茫茫大海,无从下手啊。查找了一些资料并询问有经验的人,最后算是知道了基于cxf框架的rest风格的web service 怎么用,下面我简单介绍一下:

首先需要在web.xml文件中进行配置:


1

2

3

4

5

6

7

8

9

<servlet>

    <servlet-name>CXFServlet</servlet-name>

    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

</servlet>

    <servlet-mapping>

    <servlet-name>CXFServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

</servlet-mapping>

在cxf-servlet.xml文件中需要配置:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<bean id =
"crmTaskOrgService"
class
="com.deppon.foss.service.impl.CrmTaskOrgService">

    <property name="matchTaskOrgService"
ref="matchTaskOrgService"></property>

</bean>

<!-- restfull -->

<jaxrs:server id="fossToCrmTaskOrgService"
address="/crmUrl">

    <jaxrs:serviceBeans>

        <ref bean="crmTaskOrgService"/>

    </jaxrs:serviceBeans>

    <jaxrs:inInterceptors>

        <bean
class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>

    </jaxrs:inInterceptors>

    <jaxrs:outInterceptors>

        <bean
class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>

    </jaxrs:outInterceptors>

</jaxrs:server>

serviecesBeans里面是你spring中配置的那个bean,这里CrmTaskOrgService必须给他一个接口,因为spring自动装配会默认用jdk的动态代理来完成,如果不想写接口也行,在CrmTaskOrgService中添加一个默认的构造器。具体原因请查阅:http://www.paisays.com/?p=70 ;address是很重要的参数,会在最后的url中显示,类似命名空间。

不要忘记引入相应的标签:

然后是接口配置(也可以写在实现类中):


1

2

3

4

5

6

7

8

@Produces(MediaType.APPLICATION_JSON)

public
interface
ICrmTaskOrgService {

    @GET

    @Path(value =
"/matchTaskOrg/{waybillNo}")

    List<OrgDto> matchTaskOrg(@PathParam("waybillNo")
String waybillNo);

}

@Produces(MediaType.APPLICATION_JSON) 声明返回类型是json的形式;
@GET  表示是用get方式提取数据。rest的思想是将http的四种动作(get,put,post,delete)用于他们真正的地方,现在无论是增删改查,基本都是用的get 或者post,put和delete很少用到。rest则提倡将相应的动作用到相应的请求上,get就是取资源,post是新增资源,put是更新,delete就是删除资源。
@Path(value = "/matchTaskOrg/{waybillNo}")  定义这个接口的路径,类似命名空间。{}中是url传过来的参数。
@PathParam("waybillNo")  声明参数

引入相应的jar

如果接口返回的是自己定义的实体类,或者集合类等,需要在对应的实体加上下面注解:

1

2

@XmlRootElement

public
class
OrgDto
implements
Serializable{

最后一步是 添加相应的maven库


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

       <dependency>

      <groupId>javax.ws.rs</groupId>

      <artifactId>javax.ws.rs</artifactId>

      <version>1.0</version>

</dependency>

<dependency>

    <groupId>org.apache.cxf</groupId>

    <artifactId>cxf-rt-frontend-jaxws</artifactId>

</dependency>

<dependency>

    <groupId>org.apache.cxf</groupId>

    <artifactId>cxf-rt-transports-http</artifactId>

</dependency>

<dependency>

    <groupId>org.apache.cxf</groupId>

    <artifactId>cxf-rt-transports-http-jetty</artifactId>

    <scope>test</scope>

</dependency>

<dependency>

    <groupId>org.apache.cxf</groupId>

    <artifactId>cxf-rt-frontend-jaxrs</artifactId>

</dependency>

jar包不要多,否则会报jar冲突的错误。

都配置好后就可以访问了,

url : http://localhost:8080/test/services/crmUrl/matchTaskOrg/976865745

测试结果:

时间: 2024-12-14 00:46:08

基于rest方式的web service的相关文章

构建一个基于 Spring 的 RESTful Web Service

本文详细介绍了基于Spring创建一个“hello world” RESTful web service工程的步骤. 目标 构建一个service,接收如下HTTP GET请求: http://localhost:8080/greeting 并返回如下JSON格式的问候语: {"id":1,"content":"Hello, World!"} 你也可以通过指定查询字符串中的可选参数name来定制问候语: http://localhost:8080

Restful 架构方式的 web service

现在公司项目用的apache wink 搭建的web service ,感觉挺好用的.顺便学习一个这种架构方式 . 个人理解apache 实现Restful 架构方式技术有两种,如果有其他新的知识或不同意看法的,大家可以留言,一起学习,本人出道不久,各位一起共勉吧. apache CXF  与  apahce WINK 分别实现了Restful 风格.其实之前的web service 实现 大多数使用 RPC 与 SOAP 来实现进行消息传递实现的,现在主流的Restful 渐渐把它们取代,XM

怎样更好的设计你的REST API之基于REST架构的Web Service设计及REST框架实现

一.REST 含状态传输(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. 眼下在三种主流的Web服务实现方案中.由于REST模式与复杂的SOAP和XML-RPC相比更加简洁.越来越多的web服务開始採用REST风格设计和实现. 比如:Amazon.com提供接近REST风格的Web服务进行图书查找:雅虎提供的Web服务也是REST风格的. 二.REST的架构设计 REST(Re

如何更好的设计你的REST API之基于REST架构的Web Service设计及REST框架实现

一.REST 含状态传输(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. 目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现.例如:Amazon.com提供接近REST风格的Web服务进行图书查找:雅虎提供的Web服务也是REST风格的. 二.REST的架构设计 REST(Rep

【转】基于CXF Java 搭建Web Service (Restful Web Service与基于SOAP的Web Service混合方案)

转载:http://www.cnblogs.com/windwithlife/archive/2013/03/03/2942157.html 一,选择一个合适的,Web开发环境: 我选择的是Eclipse for J2EE,当然大家可以选择MyEclipse我只是嫌最新版的MyEclipse Crack太烦,所以没用它.当年我也是最喜欢它的哟.如果你手头只有Eclipse for Java没关系,安装一个WTP就可以了. a.首先创建一个Dynamic Web Project : 在创建的第一页

基于REST架构的Web Service设计

REST的架构设计 REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速 度,性能.效率和易用性上都优于SOAP协议. REST架构遵循了CRUD原则,CRUD原则对于资源只需要四种行 为:Create(创建).Read(读取).Update(更新)和Delete(删除)就可以完成对其操作和处理.这四个操作是一种

基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service

引言 前段时间一直在做一个ERP系统,随着系统功能的完善,客户端(CS模式)变得越来越臃肿.现在想将业务逻辑层以下部分和界面层分离,使用Web Service来做.由于C#中通过直接添加引用的方来调用Web Service的方式不够灵活,故采取手动发送Http请求的方式来调用Web Service.最后选择使用Post方式来调用Web Service,至于安全性和效率暂不考虑.在学习使用的过程,遇到了很多问题,也花了很长时间来解决,网上相关的帖子很少,如果各位在使用的过程中有一些问题难以解决,可

JAX-RS 方式的 RESTful Web Service 开发

JAX-RS 方式的 RESTful Web Service 开发 ——基于 CXF+Spring 的实现 Web Service 目前在风格上有两大类,一个是基于 SOAP 协议,一个是完全遵循 HTTP 协议规范的 RESTful 风格. SOAP 方式的 web service 已经很成熟了,应用也很广,已经成为 Web Service 的工业标准.不过 RESTful Web Service 现在势头越来越猛,特别是其灵活性以及与 Ajax 的完美结合,让人爱不释手,很有必要了解一下.

基于Web Service的客户端框架搭建四:终结篇

前言 这是这个系列的终结篇,前面3个博客介绍了一下内容: 1.使用Http Post方式调用Web Service 2.客户端框架之数据转换层 3.客户端框架之代理层 框架结构 框架是基于C#的,在VS2010中搭建出来的,解决方案搭建完毕之后的框架结构如下图: 如上图,框架主要分数据层Data,数据转换成FCL,代理层Proxy,功能分发层Dispatcher以及界面层UI. 1.数据转换层FCL 数据格式转换层,位于在Proxy服务代理层和UI界面层之间.在UI层使用的都是明确的实例对象(比