canal项目从SimpleCanalClientTest入手,在wiki上有详细的资料
这里有一个连接数据库操作,先是确定IP地址
InetAddress.getLocalHost()的解释看
http://blog.csdn.net/perfect5085/article/details/7283067
使用:InetAddress.getLocalHost() 出现异常:
“Reason: java.net.UnknownHostException zw_65_43 : …..
问题原因是在系统的 /etc/Hostname中配置了“zw_65_43” 作为主机名,
而在/etc/hosts文件中没有 相应的“zw_65_43”。
简单的解决办法是对应关系配好就可以,甚至删除/etc/Hostname这个文件也可以。
深层的原因: 在大多数Linux操作系统中,都是以/etc/hosts中的配置查找主机名的,
但是 Detian based system 用/etc/Hostname文件中的配置做主机名。
而Java 的InetAddress.java 调用 InetAddressImpl.java 的
public native String getLocalHostName() throws UnknownHostException; 来获取本地主机名,
Java 的这个方法是native的,是本地系统的一个实现,所以在本地配置出现问题的情况下,Java 代码出现问题。
hostname 查看本机名称,
a. 若本机名称不是一个IP地址, 比如是”sohu”,则必须在/etc/hosts中配置 sohu对应本机IP,
否则java.net.InetAddress.getLocalHost会抛出java.net.UnknownHostException异常.
进入方法
这里看是要找主机ip,进入方法:
这里有System.getSecurityManager这个方法,在网上查阅是属于 安全管理器SecurityManage
在http://blog.csdn.net/yfqnihao/article/details/8263358和http://www.importnew.com/9751.html这个里有详细的介绍
Inet4AddressImpl.getLocalHostName和Inet4AddressImpl.loopbackAddress这个方法在
http://blog.csdn.net/u012377333/article/details/48054637有描述
查看/etc/resolv.conf下配置的nameserver和/etc/hosts下面的配置