今天在学习 eureka 的基于DNS加载 可用空间/区域 关系时,用到了JNDI加载DNS。一开始我一直没想明白,后来通过查阅资料,发现这是Java的JNDI提供了DNS查阅功能,让我们直接看看代码演示吧:

    1. @Test
    2. public void testJndiDns() throws NamingException {
    3. // 要查询的域名
    4. String queryUrl = "txt.region1.codeleven.cn";
    5. Hashtable<String,String> env = new Hashtable<String,String>();
    6. // 指定JNDI的实现
    7. env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
    8. // 创建JNDI环境
    9. InitialDirContext context = new InitialDirContext(env);
    10. // 指定要查询的属性
    11. String[] queryAttribute = {"TXT"};
    12. // 查询
    13. Attributes attributes = context.getAttributes(queryUrl, queryAttribute);
    14. // 获取TXT属性
    15. Attribute txtAttribute = attributes.get("TXT");
    16. // 输出TXT的查询结果
    17. System.out.println(txtAttribute.get().toString());
    18. }