5

複数の TXT レコードを持つドメインがあります。Dig はそれらすべてを表示します。ネームサーバーはそれらを非決定論的な順序で返します。クラスのみでこれらのレコードを取得しようとするとjavax.naming.directory、ネームサーバーによって返される最初の名前になります。

コードの一部を次に示します。

Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial",
            "com.sun.jndi.dns.DnsContextFactory");
DirContext dirContext = new InitialDirContext(env);
Attributes attrs = dirContext.getAttributes(name, new String[] { "TXT" });

この時点で、attrsever には 1 つのみが含まれますAttribute。これは予想される動作ですか?Java にすべての TXT レコードを取得させるにはどうすればよいですか?

4

1 に答える 1

7

私自身のテストでは、(単一の)返された属性には、TXT私が試したドメインの両方のレコードが含まれています。

Attributes attrs = dirContext.getAttributes("paypal.com", new String[] { "TXT" });
Attribute txt = attrs.get("TXT");
NamingEnumeration e = txt.getAll();
while (e.hasMore()) {
     System.out.println(e.next());
}

それがうまくいかない場合は、dnsjavaライブラリを使用すると、すべてのレコードを確実に取得できます。

于 2012-09-05T10:48:49.277 に答える