对于jvm 进行自定义dns 可以解决不少问题(比如特定系统需要一个额外的域名改写,但是并不希望进行全局修改)
对于java 1.4-8 我们是可以直接进行dns 配置的(系统属性就可以了),之后的版本就不行了,具体参考dnsjava 的说明

实际配置

  • 参考配置
-Dsun.net.spi.nameservice.provider.1=dns,sun
-Dsun.net.spi.nameservice.nameservers=127.0.0.1
代码效果
集成了cnsul dns 的简单示例
启动consul
consul agent --dev -dns-port=53
注册服务

curl --request PUT --data '{
  "name": "my-service",
  "id": "my-service-1",
  "tags": ["web"],
  "address": "127.0.0.1",
  "port": 8080
}' http://127.0.0.1:8500/v1/agent/service/register
 
 
curl --request PUT --data '{
  "name": "my-service",
  "id": "my-service-2",
  "tags": ["web"],
  "address": "192.168.2.1",
  "port": 8080
}' http://127.0.0.1:8500/v1/agent/service/register
App.java

package com.dalong;
import java.net.InetAddress;
import java.net.UnknownHostException;
 
public class App {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress inetAddress  =   InetAddress.getByName("my-service.service.consul");
        System.out.println("Host Name: " + inetAddress.getHostAddress());
    }
}
-Dsun.net.spi.nameservice.nameservers=127.0.0.1

jvm 自定义dns_java

说明

以上是一个简单配置说明,主要是记录下

参考资料

https://javadoc.io/doc/dnsjava/dnsjava/3.0.0/org/xbill/DNS/spi/DNSJavaNameService.html
https://github.com/dnsjava/dnsjava