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

Tomcat et TomEE Java Discussion :

JNDI et Tomcat


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut JNDI et Tomcat
    Bonjour,

    J'essaye d'utiliser activeMQ avec JNDI et Tomcat mais quand je lance ma classe pour la connexion à ActiveMQ, cela me dit: Le Nom connectionFactory n'est pas lié à ce Contexte

    Je ne vois pas de ou cela provient. Voici le fichier jndi.properties:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
     
    # use the following property to configure the default connector
    java.naming.provider.url = tcp://localhost:61616
     
    # use the following property to specify the JNDI name the connection factory
    # should appear as. 
    connectionFactoryNames = connectionFactory
     
    # Queue dans laquelle le producteur doit envoyer les messages
    queue.Producteur = queueProd
     
    # Queue dans laquelle le lecteur doit récupérer les messages
    queue.Lecteur = queueLect
    web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <web-app>
    	<servlet>
    		<servlet-name>JMSContextListener</servlet-name>
    		<servlet-class>controller.JMSContextListener</servlet-class>
    	</servlet>
     
    	<listener>
    	    <listener-class>controller.JMSContextListener</listener-class>
    	</listener>
    </web-app>
    connexion:
    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
    	public Connexion(String queueUtiliser){
    	    try{
    	    	context = new InitialContext();
     
    	    	//Création d'une connexion factory
    	    	ActiveMQConnectionFactory connectionFactory = (ActiveMQConnectionFactory)context.lookup("connectionFactory" );
     
    	    	//Création d'une connexion
    	    	connection = connectionFactory.createConnection();
    	    	connection.start();
     
    	    	//Création d'une session
    	    	session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
     
    	    	//Création d'une destination
    	    	destination = (Destination) context.lookup(queueUtiliser);
    	    }catch (Exception e) {
    			System.out.println("Caught Exception: " + e);
    			e.printStackTrace();
    		}
    	}
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Salut,

    Si tes professeurs t'imposent d'utiliser le fichier JNDI, ce n'est surement pas pour que tu utilises ActiveMQInitialContextFactory de manière explicite dans le code, d'ailleurs tu ne dois rien utiliser de org.apache.activemq.*

    Tu as essayé :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Context context = new InitialContext();
    Context jmsContext = (Context) context.lookup("java:comp/env/jms");
    ConnectionFactory connectionFactory = (ConnectionFactory) jmsContext.lookup("connectionFactory");

    Ou :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Context context = new InitialContext();
    ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("java:comp/env/jms/connectionFactory");

    ?
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Il faudrait que j'utilise quoi alors

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Ceci :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Context context = new InitialContext();
    ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("java:comp/env/jms/connectionFactory");
    fonctionne ou ne fonctionne pas ?
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    En faite, je ne peut pas utiliser de JNDI properties avec TOMCAT. J'ai du créer un context.xml que j'ai placé dans META-INF
    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
    <Context antiJARLocking="true">
    <Resource
    	name="connectionFactory"
    	auth="Container"
    	type="org.apache.activemq.ActiveMQConnectionFactory"
    	description="JMS Connection Factory"
    	factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    	brokerURL="tcp://localhost:61616"
    	brokerName="LocalActiveMQBroker"
    	useEmbeddedBroker="false"/>
     
    <Resource name="queue/producteur"
    	auth="Container"
    	type="org.apache.activemq.command.ActiveMQQueue"
    	factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    	physicalName="producteur"/>
     
    <Resource name="queue/lecteur"
    	auth="Container"
    	type="org.apache.activemq.command.ActiveMQQueue"
    	factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    	physicalName="producteur"/>
    </Context>
    et faire comme ceci pour la connexion:

    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
    	        InitialContext initialContext = new InitialContext();
    	        context = (Context) initialContext.lookup("java:comp/env");
     
    	        //Création d'une connexion factory
    	    	ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup("connectionFactory");
     
    	    	//Création d'une connexion
    	    	connection = connectionFactory.createConnection();
    	    	connection.start();
     
    	    	//Création d'une session
    	    	session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
     
    	    	//Création d'une destination
    	    	destination = (Destination) context.lookup(queueUtiliser);
    Et pourquoi je ne pouvais pas utiliser ceci dans le JNDI.properties:
    org.apache.activemq.jndi.ActiveMQInitialContextFactory

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Ah là tu vois je m'en veux un peu, parce que j'avais moi aussi trébuché sur ce problème avant de découvrir la solution (http://activemq.apache.org/tomcat) et de la partager avec les gens de ma promo y a 3 ans... j'aurais du m'en rendre compte en voyant ton fichier web.xml que c'était un projet JEE mais j'avais complètement oublié cette subtilité...
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

Discussions similaires

  1. Utilisation du contexte JNDI de Tomcat
    Par anisj1m dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 23/01/2012, 09h47
  2. JNDI sous Tomcat, class not found exception
    Par ChristopheH dans le forum Tomcat et TomEE
    Réponses: 16
    Dernier message: 19/12/2009, 01h24
  3. JNDI et Tomcat
    Par guicecal dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 08/12/2009, 10h17
  4. Problème de configuration de datasources via JNDI dans tomcat
    Par flo_rian dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 11/06/2009, 10h21
  5. Tomcat 6 + JNDI
    Par Dvoraky dans le forum Tomcat et TomEE
    Réponses: 16
    Dernier message: 28/02/2008, 11h28

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