工作也快半年了,时间很快,发现自己越来越懒了,书都堆灰了…平时工作虽忙但是周末不忙啊哈哈,看了zhoumorvan大神的博客和身边给力的小伙伴们,决定以后还是多看看多写写多分享。
记录是一个极好的习惯,我们会的知识中,有很大一部分其实是相对碎片的,很容易忘记。将它们整理并记下来是一个结构化知识的过程,也是一个整理和总结的过程。
工作第一篇,来个极简的:最近接入了人口信息应用平台的Web Service服务,第一次接触,就说一说使用CFX来调用Web Service服务的方式(没写如何发布Web Service服务,因为没做,可参考CXF和Spring整合发布和基于Maven在Spring中集成CXF Web Service框架)。
CXF调用Web Service服务
1、下载CXF,解压即用(环境变量)
2、主要使用wadl2java这个工具,将Web Service发布的服务生成客户端java代码
- encoding:编码
- p:package(这个包的结构需要注意,需要与代码中的包结构一致)
- d:代码生成目录
3、通过CXF的JaxWsProxyFactoryBean类来调用Web Service服务
也可以集成在spring mvc中
|
|
这里的NciicServicesPortType是CXF生成的Web Service接口类,里面定义了wsdl文件所描述的所有服务接口,形式如下:
PS:Nciic这个是个自签名(或CNNIC证书)的https,还需要安装它网站的证书,参考StevenLian这个博客。附一个java添加证书信任列表的静态代码块:
PS:Nciic这个服务挺慢的(200ms),还挺贵的(按次收费)…我们在调用时加入memcache缓存,避免短时相同请求重复调用,并且将验证通过的结果写入到数据库中,先查缓存和数据库最后再用第三方服务。
思考
Web Service通过基于XML的SOAP来表示数据和请求,低耦合,在接口的发布和复用性上确实还行,接口的可读性也可以,但是确实还是没有调Http服务的api接口方便,很多国企和国家的对外服务貌似Web Service用的很多,但是在互联网公司貌似用的很少。Nciic服务使用Xml做请求和返回方式还是没有json方便,orz。
2017/11/18 done