Details
-
New Feature
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.9.0
-
None
-
None
Description
With the native Artemis JMS classes, eg org.apache.activemq.artemis.jndi.JNDIReferenceFactory, it is not possible to configure the SSL parameters through JNDI properties. It's only possible by "stuffing" everything inside the brokerURL, which isn't nice.
To put into context, with the "plain ol' ActiveMQ" JNDIReferenceFactory, you can do (borrowing from the Tomcat syntax to define a JNDI resource):
<Resource name="jms/CONNECTION-FACTORY" auth="Container" type="org.apache.activemq.ActiveMQSslConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="ssl://localhost:14617" trustStore="/pathto/client.ts" keyStore="/path/to/client.ks" trustStorePassword="trustPass" keyStorePassword="keyPass"/>
The equivalent is not possible with the Artemis native JMS API. Instead you need to encode things inside the brokerURL (which btw is poorly documented on which options are available).
The request is to enhance org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory with additional "setter" methods that allow you to specify parameters such as "ssl-enable", "trustStore", "keyStore", "trustStorePassword", "keyStorePassword". The "buildFromProperties()" method should then take care of passing the values in the JNDI binding to the ActiveMQConnectionFactory, which will then use it to correctly initialize the connection.
Eg. the expectation is to be able to do the following to configure an Artemis "native" ActiveMQConnectionFactory for SSL:
<Resource name="jms/CONNECTION-FACTORY" auth="Container" type="org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.artemis.jndi.JNDIReferenceFactory" brokerURL="tcp://localhost:14617" ssl-enable="true" trustStore="/pathto/client.ts" keyStore="/path/to/client.ks" trustStorePassword="trustPass" keyStorePassword="keyPass"/>