關於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
相關文章
相關標籤/搜索