ESB接口调用异常汇总

时间:2024-04-09 10:58:16

一、ESB接口前置知识
1. ESB接口简述

第三方厂商或内部系统提供webservice服务地址,消费端根据服务端的服务地址生成客户端代码。

2. 生成的代码组成部分

主要有2部分:第一部分:与之交互的报文标签,用于消费端按照此标签嵌套方式组装报文;第二部分就是调用服务端的地址,只需要添加客户端地址即可。消费端编写处理类,负责把查询出来的数据,把数据填充到指定的报文标签中,调用提供的逻辑层代码即可。

二、常见的异常汇总
2.1. 场景1:不能解析某域名

调用服务不能解析某域名(例如:esb1)
导致出现以上的原因是:在代码中服务端地址在是以域名的形式存在的,调用服务在没有任何配置的情况下,会出现此异常。
解决方案:
需要在服务器或者本地电脑的hosts文件中配置域名和ip的映射关系

2.2. 场景2:调用服务连接超时

导致出现以上的原因有2种:
第一种:服务端地址本身就有问题。
例如:开发之前,服务端和消费端约定好服务端地址,但是,服务端服务尚未开发完成,消费端这时去调用服务端地址会出现连接超时的现象。
解决方案:通过邮件或者其它方式联系甲方,向甲方汇报此现象,寻求甲方协助。
第二种:就是服务端地址正常,但是,系统处没有开发连接或者某端口权限
解决方案:
通过邮件或者其它方式联系甲方,向甲方汇报此现象,寻求甲方协助。
注:以上2种解决方案,不在开发职责范围之内,应该寻求甲方负责人协助

三、调用服务前异常

前言声明:esb接口用的是jdk内部的jar依赖,不需要额外的jar

3.1. 异常描述
3.2. CXF相关的jar和jdk的rt.jar中冲突
3.3. 异常现象

在调用esb服务地址之前,new PayCommitSrvBindingQSService()时,触发异常。

3.4. 异常日志

ESB接口调用异常汇总

3.5. 异常日志分析

从日志中可以看出,本来应该创建javax.xml.ws.Service.(Service.java:77),但是,org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.

3.6. 代码异常定位

ESB接口调用异常汇总
ESB接口调用异常汇总

3.7. 解决方案

因为esb接口调用依赖属于jdk内部的rt.jar内部对象。因此,建议在评估风险影响范围之后,删除cxf相关的jar即可

3.8. 类似场景

这样的异常集成xfire的相关的jar也会出现