java - 具有 SSL 连接功能的通用 JMS 客户端

标签 java jakarta-ee ssl jms

目前,我已经使用标准 JMS API(仅 javax.jms.* 类)实现了非 SSL 安全客户端。当提供特定产品 JAR 和适当的类名时,它能够连接到任何 JMS 服务器。

有没有办法实现这种具有 SSL 连接功能的通用(独立于供应商)JMS 客户端?

我的研究并不成功 - 我发现了几个使用 SSL 实现 JMS 的示例(例如 Novell JMSActiveMQ ),但它们都没有避免直接在代码中使用特定于供应商的类,并且实现差异很大。

最佳答案

使用 SSL 不需要更改客户端中的任何代码。添加 SSL 功能只是配置问题。

一般来说,几乎没有什么不同:

  1. 连接 URL,以便客户端通过 SSL 协议(protocol)连接到正确的端口(ssl://broker_url 而不是 tcp://broker_url) .
  2. 连接工厂类 - 可能与非 SSL 类不同。
  3. 要使用的
  4. Keystore 和/或 truststore。可以使用特定方法以编程方式设置这些文件的路径——但这种方法需要实现供应商特定代码。更好的选择是传递 KS/TS java 系统属性。 (这甚至可以在没有任何准备的情况下使用 -D JVM 选项完成。)

由于第 2 点和第 3 点因 JMS 代理而异,请参阅供应商的文档以了解更多详细信息。


此答案基于成功连接到 Apache ActiveMQ 和 Tibco EMS 的经验,包括相互证书身份验证。

关于java - 具有 SSL 连接功能的通用 JMS 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988163/

相关文章:

mysql - 如何将 MySQL Workbench 配置为不需要 SSL 加密

python - 带有在线存储的桌面 Python 应用程序

java - when() 是如何工作的?

java - 每秒安排一次 Get Api 调用与执行订阅者 API 之间有什么区别?

java - 在elastic或mongodb中存储128位数字

java - 在这种情况下使用 Springs IoC?

jakarta-ee - Java EE 路线图和学习资料

ssl - UIPath : The Remote Certificate is invalid according to validation procedure

java - 如何控制 Vaadin 表的列宽?

string - 从 Hibernate 查询中获取 SQL 字符串