webService整合spring的配置

WebService是一个平台独立的,低耦合的,自包含的,基于可编程的web应用技术,可使用开放的XML 标准来描述,发布协调和配置这些应用程序,用于开发分布式的互操作应用程序.

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

cxf是目前最主流的WebService开发框架,由Apache提供,

CXF-WebService主要分为两种服务,提供方式:WS,RS;

JAX-WS传输数据,就是XML格式,基于SOAP协议;

JAX-RS传输数据,传输XML格式或者JSON格式,基于协议

cxf_ws整合spring的applicationContext.xml配置

服务器的配置


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd">
        
  
        
            
        

    


@WebService使用类上面,标记类是WebService服务提供对象

@WebMethod使用方法上面,标记方法是WebService服务提供的方法

客户端的配置


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd">
    
    
                     serviceClass="cn.douyu.cxf.service.UserService"
                address="http://localhost:9009/cxf_ws_spring/services/userService">
        
        
            
        

        
        
            
        

    

    

Web.xml的配置


    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                        id="WebApp_ID" version="2.5">
    
    
    
        contextConfigLocation
        classpath:applicationContext.xml
    

    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        CXFService
        org.apache.cxf.transport.servlet.CXFServlet
        1
    

    
        CXFService
        /services/*
    

    
    
        index.html
        index.htm
        index.jsp
        default.html
        default.htm
        default.jsp
    


1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

2)它的值必须是一个整数,表示servlet应该被载入的顺序

2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

5)当值相同时,容器就会自己选择顺序来加载。


CXF-RS整合Spring的applicationContext.xml的配置


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/jaxrs
        http://cxf.apache.org/schemas/jaxrs.xsd">
   
    address="/userService"
>
        
            
        

        
        
            
        

        
            
        

    
    

web.xml的配置


    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    
    
    
        contextConfigLocation
        classpath:applicationContext.xml
    

    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        CXFService
        org.apache.cxf.transport.servlet.CXFServlet
        1
    

    
        CXFService
        /services/*
    

服务器端的代码编写
package cn.douyu.cxf.service;

import java.util.List;

import javax.jws.WebMethod;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import cn.douyu.cxf.domain.Car;
import cn.douyu.cxf.domain.User;

//@Path("/userService")
@Produces("*/*")
public interface UserService {

    @POST
    @Path("/user")
    @Consumes({"application/xml","application/json"})
    public void saveUser(User user);
    
    @PUT
    @Path("/user")
    @Consumes({"application/xml","application/json"})
    public void updateUser(User user);
    
    @GET
    @Path("/user")
    @Produces({"application/xml","application/json"})
    public List findAllUsers();
    
    @GET
    @Path("/user/{id}")
    @Consumes({"application/xml"})
    @Produces({"application/xml","application/json"})
    public User findUserById(@PathParam("id") Integer id);
    
    @DELETE
    @Path("/user/{id}")
    @Consumes({"application/xml"})
    public void deleteUser(@PathParam("id") Integer id);
    
}
客户端代码的编写

package cn.douyu.cxf.client;


import java.util.Collection;

import javax.ws.rs.core.MediaType;

import org.apache.cxf.jaxrs.client.WebClient;

import cn.douyu.cxf.domain.User;
import cn.douyu.cxf.service.UserService;

public class RS_Client {

    public static void main(String[] args) {
        Collection collection = WebClient
                .create("http://localhost:9800/cxf_rs_spring/services/userService/user")
                .accept(MediaType.APPLICATION_XML).getCollection(User.class);
        System.out.println(collection);
        
        User user = new User();
 WebClient.create("http://localhost:9800/cxf_rs_spring/services/userService/user").type(MediaType.APPLICATION_JSON).post(user);
        
        User resultUser = WebClient.create("http://localhost:9800/cxf_rs_spring/services/userService/user/1").accept(MediaType.APPLICATION_JSON).get(User.class);
        System.out.println(resultUser);
    }
}

WebService应用流程
服务端:

1.导入相应的jar包

2.配置web.xml中的CXFServlet

3.配置applicationContext.xml     jaxrs:server

4:服务接口

@path("/aaa") 构建访问路径http://IP:port端口号/项目名/web.xml中的CXFServlet的url-pattern的路径配置/applicationContext.xml中的address的配置/服务接口中配置@Path路径

@GET  (该方法为查询)

@POST (该方法为添加)

@PUT  (该方法为修改)

@DELETE (该方法为删除)

@Consume是 (消费,该方法有参数)

@Produces  (生成,该方法有返回值)

@PathParam
                    @Path("/aaa/{id}/{name}")
                    http://ip:port/项目名/web.xml(services)/applicationContext.xml(address)/aaa/1/zs
                    public void method(@PathParam("id")Integer id,@PathParam("name") String name);
@QueryParam
                    @Path("/aaa")
                    http://ip:port/项目名/web.xml(services)/applicationContext.xml(address)/aaa?id=x&name=zs
                    public void method(@QueryParam("id")Integer id,@PathParam("name") String name);

客户端:

WebClient.create("url").type()[如果有参数传递用type]|accept("参数的MediaType.application.xml或者application.json")[如果服务有返回值需要接受].get(模型类.class)||getCollection(模型类.class)||.post(模型对象)||.put||delete





你可能感兴趣的:(webService整合spring的配置)