关于openfire服务器启动变慢问题解决

拔掉网线就变快了;

找到XMPPServerInfoImpl.java类

找到67行左右,有这么一句

return JiveGlobals.getProperty( "xmpp.fqdn",  InetAddress.getLocalHost().getCanonicalHostName() ).toLowerCase();

改为

return JiveGlobals.getProperty( "xmpp.fqdn",  InetAddress.getLocalHost().getHostName() ).toLowerCase();

然后就好了

getCanonicalHostName方法和getHostName方法一样,也是得到远程主机的域名。但它们有一个区别。getCanonicalHostName得到的是主机名,而getHostName得到的主机别名。getCanonicalHostName的定义如下:

public String getCanonicalHostName()

在访问某些域名时,getCanonicalHostName方法和getHostName方法的返回值是一样的,这和DNS服务器如何解释主机名和主机别名以及它们的设置有关。如通过www.ibm.com创建InetAddress对象后,使用getCanonicalHostName方法和getHostName方法返回的结果都是www.ibm.com(有时直接返回IP地址,这可能和IBMDNS服务器的处理机制有关)。如果DNS不允许通过IP地址得到域名,那么这两个方法就会返回IP地址来代替域名。getCanonicalHostName方法可以分三种情况来讨论:

1. 使用getLocalHost创建InetAddress对象

在这种情况下getCanonicalHostName方法和getHostName方法得到的都是本机名。

2. 使用域名创建InetAddress对象

在这种情况下,getCanonicalHostName方法是否要访问DNS服务器,取决于DNS服务器如何解释主机名和主机别名。也就是说,是否在创建InetAddress对象时就将主机名和主机别名都确定了。在前面已经讲过,使用域名创建InetAddress对象后,调用getHostName方法不会访问DNS服务器。但getCanonicalHostName方法就不一定了。这和DNS服务器的设置有关。如www.126.com就需要访问DNS服务器,而www.ibm.com就不需要访问DNS服务器。

3使用IP地址创建InetAddress对象

    在这种情况下,getCanonicalHostName方法和getHostName方法是完全一样的,也就是说,它们得到的都是主机名,而不是主机别名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值