首页 > 如何在 Java 中模拟一个 /etc/hosts 文件来自定义域名解析?

如何在 Java 中模拟一个 /etc/hosts 文件来自定义域名解析?

问题中的“模拟一个 /etc/hosts”只是举个例子,目的是如何实现如 hosts 文件一样自定义域名解析

在生产环境中有时需要修改域名 aaa.com 的解析 IP,目前知道有两种方式来实现:
1、修改生产主机的 /etc/hosts 文件
2、每次请求时将 Host 头改为想要的解析 IP

这两种方法都不够便捷,有没有另外一种方式可以在 Java 环境中定义一个域名的 IP,然后我可以随时方便的修改该域名的指向 IP?(除了自己搭建一个DNS)


可以用这个库 https://github.com/alibaba/java-dns-cache-manipulator/tree/master/library :

你要使用方式也是支持的:

更多使用的说明可以看项目文档中的User Guide

库已经发到Maven中央库了,你可以直接引用:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dns-cache-manipulator</artifactId>
    <version>1.5.1</version>
</dependency>

不认同这种变换域名解析这种方案, 你应该更多的考虑如何避免这个方案, 通过其他途径来实现 @RunSN

项目文档的需求场景中说明了一些 可以/需要/不得不 这样做的需求场景。

@RunSN 简单说,刚开始我要写项目的需求 也是 被逼无奈的,哈哈~


这个项目还提供了一个命令行工具,可以直接修改/设置 运行中Java进程的DNS, https://github.com/alibaba/java-dns-cache-manipulator/blob/master/tool 。 使用说明见工程文档。

PS: 我是这个项目开发者,有什么问题 欢迎反馈,


为什么不发散思维一下哩, 一直想着 hosts 当然解决不了的, hosts 是没有这功能的, java 也没听说过这功能
建立一个 map
Map map = new HashMap();
map.set('test.com', '0.0.0.0');
要用的时候 get('test.com') 改的时候 set(xx,xx)

不认同这种变换域名解析这种方案, 你应该更多的考虑如何避免这个方案, 通过其他途径来实现

【热门文章】
【热门文章】