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

最近发现在java执行方法中,如果有对http接口的调用时,会出现接口的相关域名改变后,java服务对接口域名的改变不生效. 很怪异的问题,后台发现是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

 

来自: http://www.iteye.com/topic/658657

 

时间: 2024-11-02 10:29:35

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

借助DNS解析来检测Java反序列化漏洞

本文讲的是借助DNS解析来检测Java反序列化漏洞, 安全问题中最重要的是什么,我们认为重要的就是确保数据来源的安全性和对敏感数据的保护. 域名系统(DNS)是关联网址(如www.makeuseof.com)和IP地址(54.221.192.241)的系统.当你使用浏览器访问一个网站,它会向DNS服务器发送你输入的地址请求,然后DNS服务器会指出其正确的IP地址,这是互联网如何工作的一个关键部分.但是DNS中的信息经常会发生泄漏. Java 对象序列化是 JDK 1.1 中引入的一组开创性特性之

域名DNS解析故障的解决方法

在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的.这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基本的排除DNS解析 在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的.这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基

排除DNS解析故障方法

在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的.这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基本的排除DNS解析故障的方法. 一.什么是DNS解析故障?  一般来说像我们访问的www.admin5.net,这些地址都叫做域名,而众所周知网络中的任何一个主机都是IP地址来标识的,也就是说只有知道了这个站点的IP地址才能够成功实现访问操作. 不过由于IP地

如何利用HTTPDNS降低DNS解析开销

如何利用HTTPDNS降低DNS解析开销 1. 背景说明 移动场景下DNS的解析开销是整个网络请求延迟中不可忽视的一部分.一方面基于UDP的localDNS解析在高丢包率的移动网络环境下更容易出现解析超时的问题,另一方面在弱网环境下DNS解析所引入的动辄数百毫秒的网络延迟也大幅加重了整个业务请求的负担,直接影响用户的终极体验. 2. 解决方案 阿里云移动服务团队推出的HTTPDNS在解决了传统域名劫持以及调度精确性的问题的同时,也提供了开发者更灵活的DNS管理方式.通过在客户端合理地应用HTTP

DNS解析过程详解

DNS解析过程详解   目录(?)[+] 先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机

如何解析域名whois信息dns解析域名

NDNS域名智能解析是我们独立开发的新一代可视化域名管理平台,什么是http://www.aliyun.com/zixun/aggregation/12499.html">域名解析?人们都习惯记忆域名,但机器间互相只认IP地址,把域名指向网站空间的IP地址,使之一一对应,它们之间的这种转换工作就被称为域名解析.域名解析需要由专门的域名解析服务器(DNS)来完成,解析过程自动进行.其功能涵盖了域名管理的各个方面,分NDNS标准版.智能版.全球版三个版本,主要的功能如下列表:般在我公司注册的域

使用Java实现DNS域名解析的简单示例_java

普通的域名解析方法: import java.net.*; public class Kkkk { public static void main(String args[]) throws Exception { InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC是我的计算机名 System.out.println(address); System.out.println("-----")

DNS解析过程详解【转】

转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我

妙用DNS解析实现防火墙客户的重定向

前言:现在很多公司都使用微软的活动目录对网络进行管理,其中内部DNS服务器是不可或缺的一个组成部分.我们知道,对于ISA的防火墙客户端通过ISA访问网络资源时,其DNS解析由ISA服务器帮助完成,你是否有想过,通过的内部DNS服务器和防火墙客户端结合,能够巧妙的解决很多实际问题. 这篇文章里,我将通过两个CASE,讲述使用两者结合的方法解决两个实际问题. 声明:这两个CASE都是我近期遇到的问题,其中解决第一个CASE的是我的一个同事,他为我提供了一种新的思路:第二个CASE则是我沿用这种思路,