一、问题
原来的项目是单服务,现在要部署在多服务器上,也就是需要搭建一个集群。
还好之前 quartz 就已经是由 mysql 来管理,所以只需要开启集群的开关即可:org.quartz.jobStore.isClustered=true
项目在本地完美运行,但是上了测试机就报异常,如下:
</p>
1 | 2018-01-30 14:23:47.234 ERROR 6101 --- [main] org.quartz.impl.StdSchedulerFactory : Couldn't generate instance Id! |
1 | org.quartz.SchedulerException: Couldn't get host name! |
1 | Caused by: java.net.UnknownHostException: WLSHASRV007: WLSHASRV007: 域名解析暂时失败 |
很糟糕,第一次碰到,查看了项目中的各处配置文件都没问题,最后 google 给我解决了,原来是 org.quartz.simpl.SimpleInstanceIdGenerator 中获取主机名异常了。
下面是源码:
1 | public class SimpleInstanceIdGenerator implements InstanceIdGenerator { |
二、解决
其实解决是很简单,
① 查看主机名:
1 | [root@WLSHASRV007 ~]# hostname |
② 查看 hosts 文件,vi /etc/hosts ,确保无乱码等异常,并确认 127.0.0.1 后面有上命令查询出的主机名
③ 如图,发现没有,则添加即可