一. 问题描述
在Linux环境下部署项目,项目正常启动后,请求API接口报错(发版前本地环境调试一切正常,没有报错情况)
日志详情:
java.net.UnknownHostException: a1.easemob.com: System error
2020/10/09-14:15:23 [http-nio-80-exec-4] INFO org.apache.http.impl.execchain.RetryExec- I/O exception (java.n et.UnknownHostException) caught when processing request to {s}->https://a1.easemob.com:443: a1.easemob.com: Sy stem error
2020/10/09-14:15:23 [http-nio-80-exec-4] INFO org.apache.http.impl.execchain.RetryExec- Retrying request to { s}->https://a1.easemob.com:443
2020/10/09-14:15:23 [http-nio-80-exec-4] INFO com.inspur.vista.tyjr.common.api.config.RestTemplateConfig- Ret ry request, execution count: 2, exception: {}
java.net.UnknownHostException: a1.easemob.com
at java.net.InetAddress.getAllByName0(InetAddress.java:1281)
at java.net.InetAddress.getAllByName(InetAddress.java:1193)
at java.net.InetAddress.getAllByName(InetAddress.java:1127)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOp erator.java:112)
......
二. 问题分析
在接口调用时,项目没有找到对应的映射名称,也就是说,访问的url不是一个ip地址,所以在映射时产生错误。
具体解释可以查看:java.Net.UnknownHostException异常处理方法,这篇博客说的很详细。
三. 解决办法
- 现在系统中对需要访问的域名进行ping命令,获取到对应的ip:
- 获取到ip后,将ip配置到部署环境的/etc/hosts 文件中,修改完成后,hosts文件修改完就及时生效,重新启动项目就可以解决问题