【问题标题】:How to configure host name resolution to use a custom host resolver that works in Java 8 and later?如何配置主机名解析以使用适用于 Java 8 及更高版本的自定义主机解析器?
【发布时间】:2022-11-01 15:12:33
【问题描述】:

根据this post,有几种方法可以在 Java 中配置自定义主机解析器,但是这些方法中的每一种都不同,并且不适用于 8 和最新版本之间的所有 Java 版本。

上面指出的帖子已有 10 年历史:有谁知道在此期间是否找到了适用于上述所有 java 版本的解决方案?如果是这样,有人有示例代码吗?

【问题讨论】:

  • Java调用宿主操作系统解析dns;为什么默认会有特定的 Java DNS 解析器?我知道的唯一选择是运行您自己的 Java DNS。这可能不是你想要的。你为什么要这样做?
  • 我对它感兴趣是出于教育目的。如何运行适用于 java 版本 8 及更高版本的 Java DNS?你能提供一个示例代码吗?
  • 没有人会提供“示例代码”,因为没有人这样做。 dnsjava 是一个用 Java 编写的 dns 服务器。您可以运行任何您喜欢的 dns 服务器,例如Unbound,然后您必须配置您的操作系统才能使用它。注意:这仍然不是 Java(作为平台)的设计目的。为什么会以非典型方式出现“解析 dns 名称”?
  • 与其启动服务器,我想知道是否有类似于this 的解决方案,但也适用于 Java 8。如果我们可以以编程方式执行相同的操作,它会更好,而不是将参数传递给 JDK。
  • 不是我知道的。祝你好运!

标签: java networking dns inetaddress


【解决方案1】:

经过深入搜索,我发现this example 使用了burningwave 工具库:

Map<String, String> hostAliases = new LinkedHashMap<>();
hostAliases.put("my.hostname.one", "123.123.123.123");

HostResolutionRequestInterceptor.INSTANCE.install(
    new MappedHostResolver(hostAliases),
    DefaultHostResolver.INSTANCE
);

InetAddress inetAddress = InetAddress.getByName("my.hostname.one");

这里是代码to add a DNS server based host resolver

【讨论】:

    猜你喜欢
    • 2012-07-23
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多