2015-01-16 4 views
0

В настоящее время я реализовал защищенный клиентом без SSL, используя стандартный JMS API (только классы javax.jms.*). Когда поставляется с конкретным JAR продукта и соответствующими именами классов, он может подключаться к любому JMS-серверу.Общий клиент JMS с возможностью подключения SSL

Есть ли способ реализовать такой универсальный (независимый от поставщика) JMS-клиент с возможностями подключения SSL?

Мое исследование не увенчалось успехом - я нашел несколько примеров внедрения JMS с SSL (например, Novell JMS, ActiveMQ), но ни один из них не избегает использования классов, специфичных для поставщика, непосредственно в коде и реализациях значительно отличается.

ответ

3

Использование SSL не требует изменения кода в клиенте. Добавление возможности SSL - это только вопрос конфигурации.

В общем, есть несколько вещей, которые будут отличаться:

  1. URL подключения таким образом, клиент подключается по протоколу SSL с соответствующим портом (ssl://broker_url вместо tcp://broker_url).
  2. Connection factory class - может отличаться от не-SSL.
  3. Keystore и/или truststore для использования. Пути к этим файлам могут быть установлены программно с использованием определенных методов - но для этого подхода требуется, чтобы код конкретного поставщика был реализован. Лучший вариант - передать свойства системы java KS/TS. (Это можно сделать даже без какой-либо подготовки, используя опцию -D JVM.)

С точек 2. и 3. отличаются от одного JMS брокера к другому, обратитесь к документации поставщика для получения более подробной информации.

Этот ответ основан на опыте успешного соединения с Apache ActiveMQ и Tibco EMS, включая аутентификацию взаимного сертификата.

Смежные вопросы