关于java的DNS解析IP缓存问题

java对DNS解析IP进行缓存,默认缓存超时时间为-1(在重启JVM前永久缓存),
在第一次访问某域名后将会缓存解析到的IP地址,之后直接从缓存里获得所需的信息(如IP地址),而无需再访问DNS服务器,
但如果在进行支付的时候DNS解析IP的地址有变更的话,提交的地址仍为原解析的IP地址,这将会访问到无效的IP地址而无法进行支付

建议在java虚拟机的设置中将缓存的时间设置为较小的时间,例如1分钟(60秒)

由于是全局的变量,在设置后会影响所有的应用程序,请先衡量一下对您平台所有的应用程序是否有影响后再进行设置

设置方法:
在命令启动JVM的时候设置参数"-Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60"
例如:运行Test.class
java -Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60 Test

Resin
第一个方式:
修改resin.conf,在 <server-default>下,添加如下配置即可
<jvm-arg>-Dnetworkaddress.cache.ttl=60</jvm-arg>
<jvm-arg>-Dsun.net.inetaddr.ttl=60</jvm-arg>
第二个方式:
在linux /unix 下或编辑 httpd.sh
args='-Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60'

websphere
第一个方式:
选择服务器-> 应用程序服务器-> Server1-> 进程定义->Java 虚拟机。
滚动到通用 JVM 参数,添加:
-Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60
单击确定以保存更改
第二个方式:
修改XML文件
IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\liangwgNode01Cell\nodes\liangwgNode01\servers\server.xml
在文件末尾,在属性“disableJIT="false"”之前的位置,
添加:genericJvmArguments="-Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60"

Tomcat
第一个方式:
1:进入TOMCAT的bin目录下,找到tomcat5w.exe文件,双击,选择java,找到java options
在文本框里添加: -Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60
第二个方式:
2: 进入TOMCAT的bin目录下,找到文件catalina.bat,增加:
JAVA_OPTS="-Xms256 -Xmx512 -Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60"

Weblogic
Weblogic目录下的两个文件:
%Weblogic_home%\user_projects\domains\domain-name\startWebLogic.cmd(如果是UNIX系统,就是startWebLogic.sh )
%Weblogic_home%\user_projects\domains\domain-name\startManagedWebLogic.cmd
(如果是UNIX系统,就是startManagedWebLogic.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值