这次的需求是将我们的系统与一个客户系统对接,对接的方式是通过web service。今天终于基本联调成功了,由于各种主观和客观原因,过程十分艰难,在此记录一下
这次对接,双向的wsdl都是由客户系统提供的,并且没有提供测试的环境,只能我们自己搭建服务端的桩来测试
由于以前用cxf开发过web service应用,过程比较顺利,所以就考虑这回也用cxf来做
先看了一下现有的系统,发现里面已经有cxf2.0.13的jar包了。不过cxf2.0.13版本有点老,想着做个jar包升级应该也是问题不大,所以就草率决定用cxf2.5.2来开发
另外感觉用客户提供的wsdl反向生成的代码很冗余,因为了解过一些wsdl,觉得对着wsdl手写应该也能搞定,所以就没有用反向生成的方式,想自己根据wsdl手写java代码
现在看来,这2个决定都太草率了,最终都造成了返工。整个过程一波三折:
1、jar包冲突
对照着wsdl,很快就手写好了客户端和服务端的代码,包括接口和领域模型。然后配一配cxf和spring的集成,搭了一个桩,一下就弄好了
可是将这部分代码放到项目里验证,用cxf2.5.2.jar替换了cxf2.0.13,就抛异常了:java.lang.IncompatibleClassChangeError: Implementing class
2、jar包升级后,旧功能不好用
好不容易定位出来,原来是2个版本的cxf所依赖的jar包是不同的,将相关的jar包也替换之后,发布成功了。可是系统中原来的几个老功能坏了,看来cxf的版本不能随便替换
3、jar包回退后,新功能不好用
于是又把cxf2.0.13替换了回去,这次老功能是可以了,我们新开发的web service也发布起来了,可是调用的时候报异常:
java.lang.IllegalArgumentException: object is not an instance of declaring class
后来发现,是cxf2.0.13和cxf2.5.2的配置文件的写法不同,改了一下以后,调用成功了
这3个问题的解决方法,见http://kyfxbl.iteye.com/blog/1467354
4、spring注入异常
当我们往服务端web service里注入业务逻辑组件,或者往业务逻辑组件里注入web service客户端接口时,依赖注入经常发生一些奇怪的问题,经常声明的bean找不到什么的
最后通过各种方式解决了,详情见http://kyfxbl.iteye.com/blog/1470923
不过还是遗留了一些问题没想通,以后再慢慢研究
5、根据wsdl手写的代码不好使
由于客户提供的wsdl比较复杂,手写的代码联调不通,最终还是只能用wsdl2java工具来做反向生成
6、用wsdl2java生成的代码,发布失败
生成了代码以后,发布又失败了,报了以下异常
Schema name conflict in collection. Namespace:xxxxxx
又花了1天时间解决了这个问题,详情见http://kyfxbl.iteye.com/blog/1483953
7、https证书问题
经过上面几个步骤,web service是发布起来了,通过http可以调通,但是客户要求用https协议来走,而且要求是双向认证。大家对https都不熟悉,这块花了3天时间才做出来,可以说是最困难的一步
8、实际联调时,客户端校验不通过
搞定了https协议问题之后,终于能业务联调了,可是失败了,客户系统那边报
Error code 'BEA-382505'. OSB Validate action failed validation: Expected element 'requestHeader' instead of 'requestBody' here in element XXX
定位发现原来是我们发送请求的时候,只填写了RequestBody的内容,以为不重要就没有填写RequestHead的内容,所以客户那边校验没通过
把这块改完以后,就OK了
总结一下:
1、开发新功能时,尽量在现有的jar包基础上开发。因为如果用与实际环境不同的jar包,很难保证不会出现jar包冲突,或者影响现有功能的问题
2、根据wsdl手写代码不是那么容易的,对于比较复杂的wsdl,还是用wsdl2java工具会比较保险
3、用spring配置文件来配置cxf还是很容易的,但是当集成spring和cxf的时候,依赖注入要特别小心,会有一些很异常的情况。这块的原因我现在还没有搞清楚
分享到:
相关推荐
《Hikvision第三方厂商Web Service对接规范(V5.2)》是海康威视为视频应用二次开发提供的一份详细的技术指南,旨在帮助第三方厂商与海康威视的系统进行无缝集成。本规范主要涉及媒体控制接口,允许外部应用程序通过...
1. **创建.NET Web Service Target**:这是pb11开发Web Service的第一步,通过定义目标,为后续的开发工作打下基础。 2. **编辑PBNVO对象**:调整并优化PBNVO对象,确保其符合Web Service的需求。 3. **部署.NET Web...
本教程深入解析了使用C#进行Web Service开发的关键技术和概念,旨在帮助开发者掌握这一重要技能。 1. **Web Service基础** - Web Service是一种通过HTTP协议传输数据的服务,可以被任何支持标准如SOAP(Simple ...
Web Service是一种基于互联网的、能够实现不同系统之间交互的标准化技术。...在实际项目中,Web Service可以极大地提高系统的灵活性和可扩展性,降低集成成本,是现代企业级应用开发的重要技术之一。
大华视频监控WEB二次开发插件是一款基于Java技术的插件,适用于Web环境,旨在帮助开发者轻松集成大华摄像头的视频流服务。该插件具有稳定性和可靠性,已经在实际项目中得到验证,可确保在不同环境下顺畅运行。 二、...
总的来说,这个海康威视web3.0开发包为用户和开发者提供了一个完整的工具集,包括了在线视频预览、云台摄像头的远程控制以及详细的开发文档,以支持用户进行高效的监控系统建设和二次开发。对于那些需要搭建或升级...
### 知识点详解:简单WEB service应用开发 #### 一、Web Services 技术概述 **Web Services** 是一种新兴的技术,近年来受到广泛关注。它不仅被各大信息技术媒体频繁报道,也被众多软件开发工具厂商所采纳,被视为...
DONSEE身份证阅读器读卡器安卓网页开发包读卡驱动,支持Web系统和Uniapp等二次开发对接。支持H5、Vue、React、Node.js、jQuery、Electron、Uniapp、JSP、PHP、ASP、ASPX、JS、HTML等开发语言。 各web浏览器测试版本...
大华视频摄像头对接代码 海康大华WEB二次开发整理 亲测 基于IE webplugin控件由于工作的原因需要开发海康和大华,还有天地伟业的摄像头,而且必须是本地部署开发,每个厂家网页版摄像头接口都不一样,而且在本地...
在大华摄像头的场景下,WebPlugin提供了一个桥梁,将客户端的JavaScript代码与摄像头设备的底层功能对接,使开发者可以利用Web3.0的相关技术,如HTML5、CSS3和JavaScript,进行更丰富的摄像头应用开发。 二、开发...
本文将深入探讨“海康大华WEB二次开发整理”这一主题,主要涉及如何对接海康威视和大华视频摄像头,并基于IE ActiveX控件进行Web端的二次开发。 首先,我们要理解什么是二次开发。在安防监控领域,二次开发是指基于...
"web对接NVR实现云台控制等功能"是一个典型的物联网(IoT)项目,旨在通过Web接口与NVR设备进行交互,提供远程监控和操作功能。下面我们将详细探讨这个项目涉及的关键知识点。 1. **Web接口开发**:这里提到的Web对接...
通过这个"大华视频监控web二次开发.zip"文件,开发者可以学习到如何对接大华视频监控系统,实现个性化的Web监控应用,从而提高工作效率和用户体验。理解并掌握上述知识点,将有助于进行成功的二次开发项目。
在这个"海康3.2.3-3.2.5webservice对接.zip"压缩包中,我们主要探讨的是如何使用海康威视提供的Web Service SDK来实现不同系统与海康设备的对接。 首先,我们需要理解Web Service的基本概念。Web Service是一种基于...
Kylix 2是其针对Linux平台的版本,但在这里我们主要讨论Delphi 6在Windows环境下的Web Service开发。SOAP(Simple Object Access Protocol)是一种轻量级的、基于XML的协议,用于在不同网络应用之间交换结构化和类型...
对接金蝶Web API的第一步是获取API文档。金蝶通常会提供详细的API参考,包括每个API的URL、请求方法、所需参数以及返回的数据格式。这些信息对于正确构建和发送请求至关重要。你需要了解金蝶Web API的认证机制,可能...
【标题】"WEB无插件开发包-v3.2,可iframe集成"指的是一个特定版本的Web应用程序开发工具包,该版本为v3.2,它具有在网页中通过iframe框架进行嵌入的功能。这个开发包的设计目的是为了实现无需浏览器插件的Web应用...
【家园Web Service】是一个以Web Service技术为核心的项目,旨在实现跨系统间的交互,提供数据的新增、查询等功能。Web Service是一种基于互联网的、用于不同应用系统间交互的技术,它允许不同平台的应用程序共享...
"海康威视摄像头WEB无插件开发包 V3.2(官方版本)"是海康威视为开发者提供的一种高效、便捷的在线视频流处理工具,旨在帮助开发者在网页端实现对海康威视摄像头的实时监控功能,而无需依赖任何浏览器插件。...
【Java Web接口开发】是Web应用程序开发中的一个重要环节,它允许不同的系统或客户端通过网络进行数据交互。在Java世界中,实现Web接口通常涉及到Servlet、JSP、Spring MVC或者RESTful API等技术。本示例"java web...