• CXF开发


    使用CXF开发Web Service服务器端:
    每个Web Service组件需要2个部分:接口和实现类
    1.开发一个Web Service业务接口。该接口要用@WebService业务接口。
    2.开发一个Web Service实现类。实现类也需要用@WebService修饰。
    3.使用Endpoint类的静态方法来发布WebService。
    
    使用CXF开发Web Service客户端:
    1.调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的java代码。任何语言
      实现了Web Service,都需要提供、并暴露WSDL文档。
    2.找到wsdl2java所生成类中,一个继承了Service的类,该类的实例可当成工厂来使用。
    3.调用Service子类的实例的getXxxPort方法,返回远程Web Service的代理。
    
    形参、返回值
    1.当形参、返回值的类型是String、基本数据类型时,CXF肯定可以轻松地处理。
    2.当形参、返回值类型是JavaBean式的复合类、List集合、数组等时CXF也可以很好的处理。
    3.还有一些像Map、非JavaBean式的复合类、CXF是处理不了的。
    
    在CXF开发中,如果遇到CXF无法处理的类型,需要程序自行处理。
    处理思路是:提供一个转换器,该转换器负责把CXF搞不定的类型,转换CXF搞得定的类型。
    1.使用@XmlJavaTypeAdapter修饰CXF无法处理的类型。使用该Annotation时,通过value属性指定一个转换器。
    2.实现自己的转换器。实现转换器式,需要开发一个CXF搞得定的类型。
    
    一次Web Service的调用----其实并不是方法调用,而是发送SOAP消息(即XML文档片段)
    
    调用一次Web Service的本质:
    1.客户端把调用方法参数,转换生成XML文档片段(SOAP消息,input消息)
    2.通过网络,把XML文档片段传给服务器。
    3.服务器接到XML文档片段。
    4.服务器解析XML文档片段,提取其中的数据。并把数据转换调用Web Service所需要的参数值。
    5.服务器执行方法。
    6.把执行方法得到的返回值、再次转换生成XML文档片段(SOAP消息,output消息)。
    7.通过网络、把XML文档片段传给客户端。
    8.客户端接收到XML文档片段。
    9.客户端解析XML文档片段,提取其中的数据。并把数据转换成调用Web Service的返回值。
    从上面调用本质来看,要一个语言支持Web Service,唯一的要求是:该语言支持XML文档解析、生成、支持网络传输。
    Web Service急需解决的问题:如何进行权限控制? 解决思路是:服务器端要求input消息总是携带有用户名、密码消息
    ----如果没有用户名、密码信息,直接拒绝调用。 如果不用CXF等框架,SOAP消息的生成、解析都是由程序员负责的,无论是添加用户名、密码信息,还是提取用户名、密码信息, 都可由程序员的代码完成。 如果用CXF等框架,SOAP消息的生成、解析都是CXF等框架来完成的。 拦截器: 为了让程序员能访问、并修改CXF框架所生成的SOAP消息,CXF提供了拦截器。 服务器端添加拦截器: 1.获取Endpoint的publish方法返回值。 2.调用该方法的返回的getInInterceptor、getOutInterceptor方法来 获取In、Out拦截器列表,接下来就可以添加拦截器了。 客户端添加拦截器: 1.调用ClientProxy的getClient方法。 2.调用该方法的返回的getInInterceptor、getOutInterceptor方法来 获取In、Out拦截器列表,接下来就可以添加拦截器了。 自定义拦截器: 需要实现Interceptor接口,实际上,我们一般会继承AbstractPhaseInterceptor。

    Web应用的类加载路径有两类: A.WEB
    -INF/classes目录 B.WEB-INF/lib目录下 CXF与Spring的整合: 可以在传统的Java EE应用的基础上添加一层Web Service层。 我们的Java EE应用就可以对外暴露Web Service, 这样就运行任何平台、任何语言编写的程序来调用这个Java EE应用。 在传统ssh项目基础上增加Web Service的步骤: 1.复制CXF的jar包。 2.在web.xml配置CXF的核心控制器:CXFServlet。 3.在Spring配置文件中导入CXF提供Schaema,XML配置文件。 4.在Spring配置文件中使用javaws:endpoint元素来暴露Web Service。 5.如果要添加拦截器。在javaws:endpoint元素里添加inInterceptor、outIntercepors子元素。

     生成客户端代码:

    wsimport -s . -p com.test.ws.client http://localhost:8080/cxf_spring/webservice//HelloWorld?wsdl

    wsdl2java http://localhost:8080/php?wsdl 

    基于web的CXF依赖spring

    调用webservice:如果不是spring项目,通过生成客户端代码来调用。如果是spring项目,只需要接口文件,通过

    <jaxws:client id="helloClient"        address="http://127.0.0.1:9999/cxf2.4_spring_web/ws/helloworld"        serviceClass="com.itcast.cxf.first.IHelloWorld"> </jaxws:client>

  • 相关阅读:
    Python004-数据处理示例:以某个数据(字段)为基准从数据中获取不同的字段行数
    VUE-004-禁止修改页面显示项,设置el-input,textarea只读方法
    VUE-003-前端表格数据展示时,设置单元格(el-table-column)保留空格和换行
    cobaltstrike4.0 cracked
    CobaltStrike3.14破解
    CobaltStrike3.12/13 破解
    Windows 10 Manager v2.3.3
    MobaXterm v10.9破解
    Jupyter/JupyterLab安装使用
    WordPress <= 4.6 命令执行漏洞(PHPMailer)复现分析
  • 原文地址:https://www.cnblogs.com/dapeng520/p/4621890.html
Copyright © 2020-2023  润新知