Как указал Эриксон, в JNDI API есть поставщик для DNS, использующий JNDI , о котором вы можете прочитать по этой ссылке. Для рабочего примера запроса запись _ldap._.tcp.mydomain.com
, см. этот код от Hudson .
Я считаю, что перед использованием DNS-провайдера вам необходимо загрузить его с чем-то вроде этого (модифицированным из кода Хадсона выше):
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns:");
DirContext ctx = new InitialDirContext(env);
оттуда вы можете получить запись SRV через что-то вроде:
Attributes attributes = ctx.getAttributes("_ldap._tcp.mydomain.com", new String[]{"SRV"});
Attribute a = attributes.get("SRV");
Мне удалось использовать подобный код в нескольких проектах для очень простой интеграции AD.