使用 JNDI 获取 DNS SRV 记录

2024-01-08

我正在尝试使用 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");
DirContext ctx = new InitialDirContext(env);
Attributes attributes = ctx.getAttributes("_sip._udp", new String [] { "SRV" });
return attributes;

但是当尝试获取属性时,出现以下异常

DNS 错误 [根异常是 java.net.PortUnreachableException: ICMP 端口不可达];剩余名称 '_sip._udp'

我已验证 host -t srv _sip._udp.server.com 返回有效的 SRV 记录。

有什么原因可能会发生这种情况吗?


以下之一:dns.server.com不是有效的 DNS 服务器,没有 SRV 记录_sip._udp,DNS 服务在端口 53(标准 DNS 端口)上没有响应,或者您的 Java 代码错误。

要诊断 DNS 服务器问题,您可以尝试host -t SRV _sip._udp.server.com dns.server.com or dig @dns.server.com -t SRV _sip._udp.server.com以确认服务器正常工作。

If host or dig返回预期的条目,请尝试对您的代码进行以下更改:

Change:

env.put("java.naming.provider.url", "dns://dns.server.com");

To:

env.put("java.naming.provider.url", "dns:");

(即,只需使用操作系统的标准 DNS 解析)

Change:

ctx.getAttributes("_sip._udp", new String [] { "SRV" });

To:

ctx.getAttributes("_sip._udp.domain.com", 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JNDI 获取 DNS SRV 记录 的相关文章

随机推荐

  • 具有多个子项的 WPF UserControl

    我有一个用户控件 我希望能够拥有多个子控件 它已经有 StackPanel 作为它的子项 那么我做错了什么 最终 我希望该控件自动包含一些它自己的子元素 然后在使用时允许在其元素之一中放置更多的子元素 我试过MSDN 的如何覆盖逻辑树 ht
  • 设置新窗口的位置

    你好 我打开一个新窗口 a href Hilfe a 此时新窗口出现在左上角 我如何设置位置 以便它出现在其他地方 通过提供top and left window open Default aspx NewWindow top 100 le
  • 如何使用 FSWatch 在 Mac OSX 上查看文件更改?

    我正在尝试使用fswatch https github com alandipert fswatch将 Linux bash 脚本中的以下几行翻译为能够在 Mac OSX 上运行 inotifywait r m myfolder while
  • 对于 EBFE 的 ARM 等效项要发出哪些字节?

    在 x86 中 如果你想引发无限循环 你可以发出一个ebfe http ebfe org 基本上是跳转到当前指令 ARM 中相当于 EBFE 的是什么 那将是0xeafffffe 自身的无条件分支
  • SPARQL 1.1 蕴含机制和使用 FROM 子句的查询

    我目前正在记录 测试 SPARQL 1 1 蕴涵制度 并且建议反复指出 范围图与活动图在图上等效 但它没有指定活动图指的是什么 它是查询中使用的数据集吗 商店中所有图表的并集 作为确定这一点的测试 我得到了这张图的 URIed
  • 安卓配置改变了

    我有兴趣知道当 Android 设备旋转时 即配置更改时 哪些方法被覆盖 onSaveInstanceState onConfigurationChanged onRestoreInstanceState 类似的东西 对我来说 聆听与更改配
  • okhttp 与 HttpURLConnection 的关系

    很多人跟我说 HttpURLConnection 是从 android 4 4 开始基于 okhttp 的 但是当我深入研究okhttp的代码时 OkHttpURLConnection是从HttpURLConnection扩展的子类 那么
  • Java反思:类字段和方法的顺序是否标准化?

    在 Java 类上使用反射来访问所有字段 方法等 这些元素是否有标准化的顺序 在某些标准中指定 当然 我could凭经验检查 但我需要知道它是否总是 相同 EDIT 我等待问题 我需要订单做什么 长话短说 我有 JAXB 注释的类 并且不想
  • 在特定条件下获取行以交换表

    我目前有一个父表 CREATE TABLE members member id SERIAL NOT NULL UNIQUE PRIMARY KEY first name varchar 20 last name varchar 20 ad
  • 检测显示器是否关闭

    我有一个信息亭类型的应用程序 如果液晶电视关闭 我需要收到通知 以便我可以惩罚某人 我正在运行带有 nVidia 显卡和 nVidia 驱动程序的 Ubuntu 10 10 电视通过 HDMI 插入 我看过了nvidia settings
  • Visual Studio Code 中的 JSON 文件错误:预期逗号 json(514)

    我在使用 Visual Studio Code 时遇到了一个奇怪的问题 我的以下 JSON 文件有问题 attribute numeroConta operator value 0030152201 问题被指责为 值 在第二个数字零 问题如
  • OnClientClick 不适用于 asp.net LinkBut​​ton

    我有一个asp netlinkbutton 其中包含OnClientClick属性 但是函数内OnClientClick永远不会被调用 它直接跳转到OnClick功能 以下是我使用 LinkBut ton 的两种方式
  • CSS3 Border-Radius 的一个边框颜色不同,正在渗色

    我有一个使用边框半径的带有圆角的流体宽度 div 以及 div 一侧颜色不同的大边框 当浏览器窗口足够小时 边框都会按其应有的方式运行 然而 当我放大窗口尺寸时 我开始看到 div 中心的颜色渗出 我想知道是否有人知道可能的解决方案 div
  • Android 以编程方式安装 apk 错误 - 包解析错误

    我在我的页面上创建一个 Edittext 以允许用户通过下载 apk 并安装来更新应用程序 我正在使用 loojp 库来处理异步任务 我的活动代码 f0textupdate setOnClickListener new View OnCli
  • 快速移动鼠标时不会触发 OnMouseOut 事件(GWT - 所有浏览器)

    我有一个代表蓝色矩形的 DIV 其中包含文本 HELLO 当用户单击它时 它的颜色更改为红色和文本 BYE 当用户将鼠标光标移出时 恢复其原始颜色和文本 这些样式在 CSS 中描述 文本由 GWT 事件控制 请参见下面的 Java 代码 问
  • Python 中具有特定方差的随机数

    在 Python 程序中 我需要生成具有特定的 用户控制的方差的正态分布随机数 我怎样才能做到这一点 Use random normalvariate http docs python org library random html ran
  • 从 Angular 前端调用 Azure AD 安全 Web API

    我目前正在开发一个 Angular 前端 它使用 MSAL 来对用户进行身份验证 该前端应调用 Web API 也托管在 Azure 中 该 API 由 Azure Active Directory 保护 虽然我轻松地设法使用 Angula
  • 如何停止 SwingWorker?

    我怎样才能阻止SwingWorker做他的工作吗 我知道有cancel 方法 但我最多能做的就是匿名创建一个新的SwingWorker这就是工作 这是供参考的代码 public void mostrarResultado final Res
  • .Net Core 3 Worker 集成测试

    对于集成测试 Asp Net Core 应用程序 我们有Web应用程序工厂 https learn microsoft com en us aspnet core test integration tests view aspnetcore
  • 使用 JNDI 获取 DNS SRV 记录

    我正在尝试使用 JNDI 从 DNS 服务器获取 SRV 记录 Hashtable