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

时间:2015-01-16 16:14:05

标签: java java-ee ssl jms

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

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

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

1 个答案:

答案 0 :(得分:4)

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

一般来说,很少有不同之处:

  1. 连接网址,以便客户端通过SSL协议连接到正确的端口(ssl://broker_url而不是tcp://broker_url)。
  2. 连接工厂类 - 可能与非SSL工具类不同。
  3. 密钥库和/或信任库将被使用。可以使用特定方法以编程方式设置这些文件的路径 - 但是此方法需要实现特定于供应商的代码。更好的选择是传递KS / TS java系统属性。 (即使没有使用-D JVM选项进行任何准备,也可以这样做。)
  4. 由于第2点和第3点与一个JMS代理不同,请参阅供应商的文档以获取更多详细信息。


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