文章目录
- 一、ESB接口前置知识
- 1. ESB接口简述
- 2. 生成的代码组成部分
- 二、常见的异常汇总
- 2.1. 场景1:不能解析某域名
- 2.2. 场景2:调用服务连接超时
- 三、调用服务前异常
- 3.1. 异常描述
- 3.2. CXF相关的jar和jdk的rt.jar中冲突
- 3.3. 异常现象
- 3.4. 异常日志
- 3.5. 异常日志分析
- 3.6. 代码异常定位
- 3.7. 解决方案
- 3.8. 类似场景
一、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. 异常日志
3.5. 异常日志分析
从日志中可以看出,本来应该创建javax.xml.ws.Service.(Service.java:77),但是,org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
3.6. 代码异常定位
3.7. 解决方案
因为esb接口调用依赖属于jdk内部的rt.jar内部对象。因此,建议在评估风险影响范围之后,删除cxf相关的jar即可
3.8. 类似场景
这样的异常集成xfire的相关的jar也会出现