Accès à une factory JMS sur un autre instance
Bonjour tout le monde,
Je suis tout nouveau sur Glassfish et j'ai un petit problème que je n'arrive pas à résoudre.
J'ai 2 serveurs Glassfish 3.1.1 (1 instance d'un côté et un cluster de l'autre) sur 2 machines distinctes A et B.
A héberge le DAS et l'instance principale du cluster.
B héberge l'autre instance du cluster et mon instance "solo".
Sur mon instance solo, je déploie une application qui a besoin d'accéder à une Factory JMS qui se trouve sur mon cluster. Lors du déploiement de cette appli, j'ai une erreur qui me dit qu'il n'arrive pas à trouver ma factory JMS (qui en l'occurence s'appelle JCF). Pourtant j'ai bien renseigné dans mon fichier jndi.properties l'adresse physique de l'instance principale de mon cluster. Bien sûr, à l'utilisation, mon application ne fonctionne pas (enfin, pas la partie qui doit accéder à JMS...).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| [#|2011-12-21T17:48:07.440+0100|INFO|glassfish3.1.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=10;_ThreadName=Thread-2;|tableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at fr.gouv.agriculture.o2.kernel.spring.SpringKernel.start(SpringKernel.java:113)
... 62 more
Caused by: fr.gouv.agriculture.ors.AsyncRuntimeException: Impossible de creer une connexion JMS
at fr.gouv.agriculture.ors.jndi.JNDIServiceLocator.getJMSConnection(JNDIServiceLocator.java:193)
at fr.gouv.agriculture.ors.jms.JMSAsyncGateway.start(JMSAsyncGateway.java:406)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1412)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1373)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
... 75 more
Caused by: com.sun.messaging.jms.JMSException: MQRA:DCF:allocation failure:createConnection:No such resource : JCF
at com.sun.messaging.jms.ra.DirectConnectionFactory._allocateConnection(DirectConnectionFactory.java:548)
at com.sun.messaging.jms.ra.DirectConnectionFactory.createConnection(DirectConnectionFactory.java:265)
at fr.gouv.agriculture.ors.jndi.JNDIServiceLocator.getJMSConnection(JNDIServiceLocator.java:147)
... 83 more
Caused by: javax.resource.ResourceException: No such resource : JCF
at com.sun.enterprise.connectors.ConnectionManagerImpl.validateResourceAndPool(ConnectionManagerImpl.java:430)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:171)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:160)
at com.sun.messaging.jms.ra.DirectConnectionFactory._allocateConnection(DirectConnectionFactory.java:543)
... 85 more
|#] |
Cette erreur est levée lors de l'appel à
Code:
1 2 3 4 5
| /** Factory de creation des connexions JMS en cache */
private javax.jms.ConnectionFactory factory;
// ...
// ... Appel qui pose problème
factory.createConnection(configuration.getJMSUser(), configuration.getJMSPassword()); |
Si je déploie rigoureusement la même application (avec donc la même config et surtout le même fichier jndi.properties), sur la même machine mais sur un Tomcat 5.5 au lieu de GF, je n'ai aucun problème pour accéder à JMS et sa factory.
Y'a-t-il une astuce particulière pour accéder à une factory JMS depuis une instance GF vers une autre instance GF ?
J'ai trouvé sur un forum Oracle qu'il fallait commenter la ligne localhost 127.0.0.1 dans le fichier /etc/hosts mais sans succés...
Pour info : mes machines A et B sont sous CentOS 5.4, basés sur une Red Hat 4.1.2, noyau 2.6.18.
Mes ports sont normalement ouverts (on a dû tous les spécifier à mano et depuis on a plus de message d'erreur d'accès sur nos ports...).