如何在 Java 中模拟一个 /etc/hosts 文件来自定义域名解析?
PHP中文网
PHP中文网 2017-04-17 15:04:00
0
2
326

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

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(2)
巴扎黑

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

  • A simple 0-dependency thread-safe lib for setting dns programmatically without touching host file, make unit/integration test portable.

  • 通过代码直接设置Java的DNS,支持JDK 6+,支持IPv6。

  • 设置DNS,不需要业务代码调整,即对业务逻辑透明。

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

  • 支持在Java代码中编程的方式设置

  • 可以用统一放在一个配置文件中,批量设置。

更多使用的说明可以看项目文档中的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: 我是这个项目开发者,有什么问题 欢迎反馈,

Ty80

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

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!