Bonjour,
J'ai un problème de communication entre deux serveurs JORAM (5.3.1) avec un bridge.
Plus précisement :
un serveur JORAM-B est créé avec 3 files JMS standard (la configuration est donnée après)
le serveur JORAM-B (persistant ou non) est démarré avec la configuration
un serveur JORAM-A persistant est démarré puis un script de configuration (en java) créé 3 files JMS bridge (JMSBridgeQueue) (la configuration est donnée après) qui permettent de faire transiter les messages du serveur JORAM-B vers le serveur JORAM-A. Le bridge fonctionne convenablement.
Cependant, Si le serveur JORAM-A est arrêté puis redemarré, les files sont remontées, les processus consumer-daemon et reconnection-daemon (processus de transmission des messages et de gestion du fail-over) redémarrent mais les messages ne transitent plus. Mais si le serveur JORAM-B est ensuite arrêté et redemarré les messages transittent de nouveau.
Tests faits :
-> bridge fonctionne
1) arrêt du serveur JORAM-A
2) redémarrage du serveur JORAM-A
=> KO
-> bridge fonctionne
1) arrêt des deux serveurs (même comportement)
2) redémarrage du serveur JORAM-B
3) redémarrage du serveur JORAM-A
=> KO
-> bridge fonctionne
1) arrêt des deux serveurs (même comportement)
2) redémarrage du serveur JORAM-A
3) redémarrage du serveur JORAM-B
=> OK
Je ne trouve pas d'information sur le sujet et la configuration a été faite en suivant la documentation officielle.
Je ne comprend pas pourquoi les messages ne transittent pas correctement lors du redémarrage alors que tout ce passe bien si le serveur JORAM-B est ensuite redemarré
Si vous avez besoin d'informations supplémentaire n'hésitez pas.
Ci-dessous la configuration de la machine et les fichiers de configuration des JORAM
Cordialement.
-------------------------------------------------
-------------------------------------------------
Configuration :
arch : x86
Os : Linux Red hat EL 4
Kernel : 2.6.9
JORAM : 5.3.1
JDK : 1.5 jrockit
JORAM-B configuration :
a3server.xml :
joramAdmin.xml<?xml version="1.0"?>
<config>
<property name="Transaction" value="fr.dyade.aaa.util.NullTransaction"/>
<server id="0" name="S0" hostname="localhost">
<service class="org.objectweb.joram.mom.proxies.ConnectionManager"
args="root root"/>
<service class="org.objectweb.joram.mom.proxies.tcp.TcpProxyService"
args="JORAM-B-PORT1"/>
<service class="fr.dyade.aaa.jndi2.server.JndiServer" args="JORAM-B-PORT2"/>
</server>
</config>
JORAM-A configuration<?xml version="1.0"?>
<JoramAdmin>
<AdminModule>
<connect host="JORAM-B-HOST"
port="JORAM-B-PORT1"
name="root"
password="root"/>
</AdminModule>
<InitialContext>
<property name="java.naming.factory.initial"
value="fr.dyade.aaa.jndi2.client.NamingContextFactory"/>
<property name="java.naming.factory.host" value="JORAM-B-HOST"/>
<property name="java.naming.factory.port" value="JORAM-B-PORT2"/>
</InitialContext>
<ConnectionFactory className="org.objectweb.joram.client.jms.tcp.QueueTcpConnectionFactory">
<tcp host="JORAM-B-HOST"
port="JORAM-B-PORT1"/>
<jndi name="CF1"/>
</ConnectionFactory>
<ConnectionFactory className="org.objectweb.joram.client.jms.tcp.TcpConnectionFactory">
<tcp host="JORAM-B-HOST" port="JORAM-B-PORT1"/>
<jndi name="CF2"/>
</ConnectionFactory>
<User name="anonymous" password="anonymous"/>
<Queue name="Queue1">
<freeReader/>
<freeWriter/>
<jndi name="Queue1"/>
</Queue>
<Queue name="Queue2">
<freeReader/>
<freeWriter/>
<jndi name="Queue2"/>
</Queue>
<Queue name="Queue3">
<freeReader/>
<freeWriter/>
<jndi name="Queue3"/>
</Queue>
</JoramAdmin>
a3server.xml :
joramAdmin.xml : pas de configuration par joramAdmin.xml<?xml version="1.0"?>
<config>
<property name="Transaction" value="fr.dyade.aaa.util.NTransaction" />
<server id="0" name="JMSAPP" hostname="localhost">
<service
class="org.objectweb.joram.mom.proxies.ConnectionManager"
args="root root" />
<service
class="org.objectweb.joram.mom.proxies.tcp.TcpProxyService"
args="JORAM-A-PORT1" />
<service class="fr.dyade.aaa.jndi2.server.JndiServer"
args="JORAM-A-PORT2" />
</server>
</config>
JORAM-A bridge configuration :
Properties prop = new Properties();
prop.setProperty("jndiUrl", "scn://" + "JORAM-B-HOST" + ":" + "JORAM-B-PORT2");
prop.setProperty("jndiFactory", "fr.dyade.aaa.jndi2.client.NamingContextFactory");
prop.setProperty("connectionFactoryName", "CF2");
prop.setProperty("destinationName", "Queue1");
prop.setProperty("jmsMode", "unified");
prop.setProperty("userName", anonymous);
prop.setProperty("password", anonymous);
prop.setProperty("automaticRequest", "true");
Queue queue_fen0029a_bridge = Queue.create(0, "org.objectweb.joram.mom.dest.jmsbridge.JMSBridgeQueue", prop);
queue_fen0029a_bridge.setFreeReading();
queue_fen0029a_bridge.setFreeWriting();
Partager