码迷,mamicode.com
首页 > Web开发 > 详细

WebService

时间:2017-08-17 13:03:36      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:roo   请求   消息   xfs   1.3   删除   模板   文件   客户端   

WebService CXF  使用入门

  很多个系统,进行分布的部署,分布的系统数据通信 解决技术就是 WebService


CXF WebService 开发,主要分为两种服务提供方式 WS 、RS

  

  JAX-WS 传输数据,就是 XML 格式,基于 SOAP 协议
  JAX-RS 传输数据,传输 XML 格式或者 JSON 格式,基于 HTTP 协议

JAX-RS

  

  RS好处:基于HTTP协议,支持多种消息格式,比如XML,JSON
  更易于实现缓存机制(第一次访问资源,缓存,第二次访问资源,放回304客户端本地)

 

POST请求方式访问 保存操作
PUT请求方法访问 修改操作
GET请求方式访问 查询操作
DELETE请求方式访问 删除操作

不带参数查询:

    @GET
    @Path("/user")
    @Produces({"application/xml","application/json"})
    public List<User> findAllUsers();    

带参数查询:

    @GET
    @Path("/user/{id}")
    @Consumer("application/xml")
    public User findUserById(@PathParam("id") Integer id);

@Path 服务访问资源路径

 

@Produces 生成(方法返回值) @Consumes 消费 (方法参数)

  @Consumes 指定能够处理客户端传递过来数据格式
  @Produces 指定能否生成哪种格式数据返回给客户端

 

JAX-RS整合spring

  导入maven坐标

<!-- CXF进行开发必须导入-->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.0.1</version>
        </dependency>
        <!--客户端需要的坐标-->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-rs-client</artifactId>
            <version>3.0.1</version>
        </dependency>
        <!--扩展JSON-->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-rs-extension-providers</artifactId>
            <version>3.0.1</version>
        </dependency>
        <!--转换json工具包,被扩展json依赖-->
        <dependency>
            <groupId>org.codehaus.jettison</groupId>
            <artifactId>jettison</artifactId>
            <version>1.3.7</version>
        </dependency>

省略spring的基本坐标

在web.xml文件中配置servlet

    <!-- CXF Servlet -->
    <servlet>
        <servlet-name>CXFService</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFService</servlet-name>
        <url-pattern>/service/*</url-pattern>
    </servlet-mapping>

引入名称空间

  xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd

创建applicationContext-WebService.xml文件


applicationContext-WebService.xml配置模板

<jaxrs:server id="userService" address="/userService">
        <jaxrs:serviceBeans>
            <bean class="com.learn.web.service.base.impl.UserServiceImpl" />
        </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>

最终访问资源服务路径

  

    服务器根目录地址 + web.xml 配置 + applicationContext-WebService.xml address 配置 + 类 @Path +
方法 @Path

 


被传输的实体类需要加上@XmlRootElement,代表这个实体类能在web-service

例如

@XmlRootElement(name = "customer")
public class Customer {

 

WebService

标签:roo   请求   消息   xfs   1.3   删除   模板   文件   客户端   

原文地址:http://www.cnblogs.com/learnjfm/p/7380317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!