对于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
说明
以上是一个简单配置说明,主要是记录下
参考资料
https://javadoc.io/doc/dnsjava/dnsjava/3.0.0/org/xbill/DNS/spi/DNSJavaNameService.html
https://github.com/dnsjava/dnsjava