web service笔记

Web Service:一种跨平台跨语言的远程调用的规范。
实际用途:
1.同一个公司的新、旧系统的整合
2.不同公司的业务整合
3.内容聚合

CXF:
CXF内置了一个Jetty Web服务器。
===================================================================================
使用CXF开发Web Service服务器端:
/****************************************
每个Web Service组件需要两个部分:接口和实现类
****************************************/
(1).开发一个Web Service业务接口。
该接口需要使用@WebService注解进行修饰
(2).开发一个Web Service的实现类,也需要使用@WebService进行修饰,并还需要设置相关属性。
(3).发布Web Service
===================================================================================
使用CXF开发Web Service客户端:
WSDL-Web Service Definition Language
(1).调用CXF提供的wsdl2java工具,根据WSDL文档生产相应的JAVA代码。
任何语言实现了Web Service,都需要提供、并暴露WSDL文档。
(2).找到wsdl2java所生成的类中,一个继承了Service的类。
该类的实例可以当做工厂来使用。
(3).调用Service子类的实例的getXxxPort方法。返回远程Web服务器端的代理对象。
===================================================================================
1.当形参、返回值是String、基本数据类型时,CXF可以轻松处理。
2.当形参、返回值是JavaBean式的复合类、List集合、数组等时,CXF也可以很好的处理。
3.还有一些像Map、非JavaBean式的复合类,CXF是处理不了的。
如果遇到不能处理的类型,可以使用@XmlJavaTypeAdapter注解进行修饰处理。
处理思路:提供一个适配器,将不能处理的类型转为可以处理的类型。
===================================================================================
Web Service三个技术基础:
1.WSDL    Web Service定义语言
2.SOAP    简单对象访问协议
    Hearder    可选的,由程序员控制添加,可以附带信息。
    Body    默认必须的,有正确和错误两种情况。正确时由WSDL控制。
3.UDDI    
一次Web Service的调用----其实并不是方法调用,而是发送SOAP消息(即是XML文档)。
===================================================================================
调用一次Web Service的本质;
1.客户端把调用的方法参数转换生成xml文档片段(SOAP消息)
2.客户端通过网络将xml文档片段传给服务器。
3.服务器端接受xml文档片段。
4.服务器端解析xml文档片段,提取其中的数据。并把数据转换为调用WebService所需要的参数
5.服务器端执行方法。
6.把执行方法得到的返回值再次转换为xml文档片段(SOAP消息)。
7.通过网络,把xml文档片段传给客户端。
8.客户端接收xml文档片段。
9.客户端解析xml文档片段,提取其中个的数据并把数据转换为调用Web Service的返回值。
===================================================================================
【拦截器】
1.获取Endpoint的Publish方法返回值
2.调用该方法返回值的getXxIterceptor方法来获取拦截器列表,接下来就可以使用拦截器。
●自定义拦截器
需要实现Interceptor接口,或者继承AbstractPhaseInterceptor。
●客户端添加拦截器
1.调用ClientProxy.getClient(xxxx)方法,以远程webservice的代理为参数。
2.获取方法调用的返回值Client对象,调用该对象的getXxIterceptor方法获取拦截器列表。
3.使用拦截器。
===================================================================================
CXF与Spring的整合
    可以在传统的Java EE应用的基础上添加一层Web Service层。
    我们的Java EE应用可以对外暴露Web Service,可以跨平台调用。
●整合步骤
1.加入CXF的jar包
2.在web.xml配置cxf的核心控制器

<!-- 下面是Web Service的接口。所有/ws/*请求都交给CXFServlet处理 -->
<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>/ws/*</url-pattern>
</servlet-mapping>


3.在Spring配置文件中导入CXF提供Schema,XML配置。
  

 <!--导入与CXF框架有关的xml -->
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />


4.在Spring配置文件中使用jaxws:endpoint元素来暴露Web Service

    <!--布置WebService接口 -->
    <!-- implementor指定WebService的服务提供者。支持两种方式。 A.直接指定类名 B.设置为容器中的一个Bean -->
<jaxws:endpoint id="service1"implementor="com.hyr.webserviceImpl.HelloWebServiceImpl" address="/userService">
</jaxws:endpoint>


5.配置拦截器 在<jaxws:endpoint>标签中进行嵌套

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


===================================================================================
【CXF与Spring的另一种整合方式】 访问其他平台的WebService接口
1.让Action依赖远程Web Service接口
2.导入jar包
3.在Spring配置文件中导入CXF提供Schema,XML配置文件
4.在Spring配置文件中使用jaxws:client元素来配置Web Service代理。
5.在jaxws:client中使用拦截器。
===================================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值