多个系统进行分布的部署,分布的系统数据通信,解决的技术就是WebService.
cxf是目前最主流的WebService开发框架,由Apache提供,
CXF-WebService主要分为两种服务,提供方式:WS,RS;
JAX-WS传输数据,就是XML格式,基于SOAP协议;
JAX-RS传输数据,传输XML格式或者JSON格式,基于协议
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: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">
address="http://localhost:9009/cxf_ws_spring/services/userService">
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">
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
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">
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">
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 extends User> 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);
}
}
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