Java 使用JNDI获取DNS SRV记录
我正在尝试使用JNDI从DNS服务器获取SRV记录Java 使用JNDI获取DNS SRV记录,java,dns,jndi,srv,Java,Dns,Jndi,Srv,我正在尝试使用JNDI从DNS服务器获取SRV记录 Hashtable<String, String> env = new Hashtable<String, String>(); env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory"); env.put("java.naming.provider.url", "dns://dns.server.com"); DirConte
Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns://dns.server.com");
DirContext ctx = new InitialDirContext(env);
Attributes attributes = ctx.getAttributes("_sip._udp", new String [] { "SRV" });
return attributes;
Hashtable env=new Hashtable();
put(“java.naming.factory.initial”、“com.sun.jndi.dns.DnsContextFactory”);
put(“java.naming.provider.url”dns://dns.server.com");
DirContext ctx=新的初始DirContext(env);
Attributes=ctx.getAttributes(“_sip._udp”,新字符串[]{“SRV”});
返回属性;
但是当尝试获取属性时,我得到以下异常
DNS错误[根异常为
java.net.portUnreachableeException:
ICMP端口不可访问];剩余名称
"啜饮"
我已经验证了主机-t srv\u sip.\u udp.server.com返回有效的srv记录
出现这种情况的原因是什么?以下原因之一:
dns.server.com
不是有效的dns服务器,没有\u sip.\u udp
的SRV记录,dns服务在端口53(标准dns端口)上没有响应,或者您的Java代码错误
要诊断DNS服务器故障,您可以尝试host-t SRV\u sip.\u udp.server.com DNS.server.com
或dig@DNS.server.com-t SRV\u sip.\u udp.server.com
确认服务器工作正常
如果host
或dig
返回预期条目,请尝试对代码进行以下更改:
更改:
env.put("java.naming.provider.url", "dns://dns.server.com");
ctx.getAttributes("_sip._udp", new String [] { "SRV" });
致:
(即,只需使用操作系统的标准DNS解析)
更改:
env.put("java.naming.provider.url", "dns://dns.server.com");
ctx.getAttributes("_sip._udp", new String [] { "SRV" });
致:
由于SRV记录需要域名才能搜索,因此您最终会得到:
Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
DirContext ctx = new InitialDirContext(env);
Attributes attributes = ctx.getAttributes("_sip._udp.domain.com", new String [] { "SRV" });
return attributes;
Hashtable env=new Hashtable();
put(“java.naming.factory.initial”、“com.sun.jndi.dns.DnsContextFactory”);
DirContext ctx=新的初始DirContext(env);
Attributes=ctx.getAttributes(“_sip._udp.domain.com”,新字符串[]{“SRV”});
返回属性;