WebService:
CXF:CXF 是目前最主流 WebService 开发框架 ,由 Apache 提供
CXF WebService 开发,主要分为两种服务提供方式 WS 、RS
WS:
服务端
1.导入对应点jar包
2.编写服务
接口
@WebService //@WebService 使用类上面,标记类是 WebService 服务提供对象
public interface IXxxService{
@WebMethod //@WebMethod 使用方法上面,标记方法 是 WebService 服务提供方法
public 返回类型 method(参数);
...
}
实现类
//@WebService 注解设置 endPointInterface 接口服务完整类名, servicename 服务名称
//想将 UserService 的服务方法,发布到网络上,给其它系统调用
@WebService(endPointInterface="接口的全类名",servicename="userservice")
public class XxxServiceImpl implements IXxxService{
public 返回类型 method(参数){
业务操作
return 返回值
}
...
}
模型类
3.配置web.xml 配置CXFServlet:
<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>/services/*</url-pattern>
</servlet-mapping>
4.配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<jaxws:server id="userService" address="/客户端访问服务路径"
serviceClass="配置接口类全名">
<jaxws:serviceBean>
<bean class="配置实现类全名" />
</jaxws:serviceBean>
</jaxws:server>
</beans>
5.访问路径
http://ip:port/项目/services(web.xml CXFServlet url-pattern)/address
客户端:
1.导入对应的jar包
2.配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!--
address 客户端访问服务路径
serviceClass 配置接口
serviceBean 配置实现类
-->
<jaxws:client id="唯一标识"
serviceClass="服务接口全类名"
address="访问服务地址" >
<!-- 来源消息拦截器 -->
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<!-- 输出消息拦截器 -->
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
</jaxws:outInterceptors>
</jaxws:client>
</beans>
3.在使用的类中通过注入,完成功能的调用
@Autowired
private IXxxService proxy;
使用proxy调用方法
RS: 基于 HTTP 协议, 支持多种消息格式,比如 XML 、JSON 更易于实现缓存机制
服务端:
1.导入对应点jar包
2.编写服务
接口
public interface IXxxService{
@Path
@Produces | @Consumes
@GET|@POST|@PUT|@DELETE
public 返回类型 method(@PathParam("")参数);
...
}
实现类
public class XxxServiceImpl implements IXxxService{
public 返回类型 method(参数){
业务操作
return 返回值
}
...
}
模型类:在类上加注解:
@XmlRootElement(name="类名")
3.配置web.xml
CXFServlet url-pattern /services/*
4.配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<jaxrs:server id="userService" address="/发布服务地址 "
serviceClass="接口的全类名">
<jaxrs:serviceBeans>
<bean class="服务实现类全名" />
</jaxrs:serviceBeans>
<!-- 日志记录 -->
<jaxrs:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxrs:inInterceptors>
<jaxrs:outInterceptord>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxrs:outInterceptord>
</jaxrs:server>
</beans>
5.访问地址
<!--address: 发布服务地址: -->
http://ip:port/项目/services(web.xml CXFServlet url-pattern)/address/path(method)[/参数]
客户端:
WebClient.create(url)//创建连接
.type(MediaType.APPLICAITON_XML)//设置参数传递类型
.accept(MediaType.APPLICATION_JSON) //设置接收返回值的类型
.get(模型类.class) //设置查询 并设置模型类类型
.getCollection(模型类.class) //设置批量查询 并设置模型类类型
.put(带参数对象) //修改操作
.post(带参数对象) //新增操作
delete(带参数对象) //删除操作
WebService的整理:
最新推荐文章于 2025-04-06 22:12:57 发布