Accéder à une queue JMS distante dans JBoss AS 7
Un article de JTips.
| Auteur : Alexis Hassler |
| Formation(s) sur le sujet : Administration JBoss AS 7 |
|
|
|
Pour accéder à une destination JMS (queue ou topic), il faut d'abord accéder au registre JNDI, lui demander la ConnectionFactory et la destination, puis se connecter au serveur et envoyer ou consommer les messages.
jndiContext = new InitialContext(); connectionFactory = (ConnectionFactory) jndiContext.lookup(factoryName); queue = (Queue) jndiContext.lookup(queueName); ...
JNDI
La configuration JNDI est la suivante (notez que le serveur JNDI est sécurisé) :
#jndi.properties java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url=remote://localhost:4447 java.naming.security.principal=alexis java.naming.security.credentials=hassler
JMS
Le nom de la fabrique est jms/RemoteConnectionFactory. Ce nom correspond au nom exporté java:jboss/exported/jms/RemoteConnectionFactory, configuré dans le fichier standalone-full.xml.
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="netty"/>
</connectors>
<entries>
<entry name="RemoteConnectionFactory"/>
<entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
</entries>
</connection-factory>
Le nom de la queue suit la même logique ; il faut qu'il soit exporté.
<jms-queue name="SWq">
<entry name="queue/SWq"/>
<entry name="java:jboss/exported/queue/SWq"/>
</jms-queue>
Enfin, JMS est sécurisé par défaut dans JBoss AS 7.1, il faut donc que le client s'authentifie aussi lors de l'établissement de la connexion JMS. Réutiliser les mêmes informations d'authentification que pour JNDI.
connection = connectionFactory.createConnection(jndiEnvironment.get(Context.SECURITY_PRINCIPAL), jndiEnvironment.get(Context.SECURITY_CREDENTIALS));
|
|
|


