IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Glassfish et Payara Java Discussion :

Accès à une factory JMS sur un autre instance


Sujet :

Glassfish et Payara Java

  1. #1
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : janvier 2004
    Messages : 754
    Points : 1 287
    Points
    1 287
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...).
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  2. #2
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : janvier 2004
    Messages : 754
    Points : 1 287
    Points
    1 287
    Par défaut Solution
    Bonjour à tous,

    Ce fut long, mais un oeil externe, en reprenant tout de zéro, nous a trouvé la solution... que je partage aussitôt !

    Les points de départs sont ici :
    http://docs.oracle.com/cd/E18930_01/...lkb.html#giotd
    et
    http://docs.oracle.com/cd/E18930_01/...jms-resource-1

    Avec une information sur les AddressList :
    A comma-separated list of message queue addresses that specify the host names (and, optionally, port numbers) of a message broker instance or instances with which your application will communicate. For example, the value could be earthearth:7677. Specify the port number if the message broker is running on a port other than the default (7676). The default value is an address list composed from the JMS hosts defined in the server's JMS service configuration. The default value is localhost and the default port number is 7676. The client will attempt a connection to a broker on port 7676 of the local host.
    En d'autres termes il faut :
    1. Créer un Connection Factory sur le serveur
    2. Créer un Connection Factory sur le client, avec le même nom que celle sur le serveur
    3. Définir dans la Connection Factory du client une propriété du type "addresslist=monServeur:sonPort"


    Par défaut les connections JMS sur font sur le broker local, même si on définit par JNDI un autre broker.


    Voilà. En espérant que ça aide...
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2007, 12h47
  2. Copier tout le contenu d'une BD MYSQL sur un autre PC
    Par condor_01 dans le forum Outils
    Réponses: 4
    Dernier message: 07/09/2006, 00h53
  3. Réponses: 3
    Dernier message: 01/08/2006, 16h57
  4. [MFC] Accès à une base access sur le net
    Par LapinGarou dans le forum MFC
    Réponses: 4
    Dernier message: 21/03/2006, 13h11
  5. Réponses: 6
    Dernier message: 30/11/2005, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo