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

Wildfly/JBoss Java Discussion :

JBoss et Message Driven Bean - ConnectionFactory


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Points : 42
    Points
    42
    Par défaut JBoss et Message Driven Bean - ConnectionFactory
    Bonjour,

    Je souhaite réaliser une petite application avec des Message Driven Bean sous Eclipse avec le plugin wtp et un serveur jboss 5.0.
    J'ai déjà réaliser une application avec des EJB cela s'est passé sans trop de problème, mais pour les MDB, j'ai besoin d'ajouter au serveur une usine de connexion (ConnectionFactory) et deux files d'attentes (Queue).

    J'ai déjà fait cela via GlassFish et il y avait une interface de gestion qui m'avait permit de les ajouter.

    Avec JBoss, je ne trouve pas comment faire

    Y'a t'il un endroit pour le faire ? en ligne de commande ?

    En espérant que vous pourrez m'aider.
    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    A priori, tu peux utiliser le QueueConnectionFactory déjà présent dans JBoss, et tu peux créer tes queues dans le fichier deploy/jms/jbossmq-destinations-service.xml de ta configuration.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Points : 42
    Points
    42
    Par défaut
    La QueueConnectionFactory, où est elle ?

    Dans mon dossier deploy, il n'y a pas de dossier jms, cela peut il venir de là ?
    J'ai fait une recherche, il n'y a pas de fichier jbossmq-destinations-service.xml.
    Par contre il y a un fichier destinations-service.xml avec ceci :
    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
    30
    31
    32
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!--
         Messaging Destinations deployment descriptor.
     
         $Id: destinations-service.xml 81998 2008-12-03 06:46:29Z scott.stark@jboss.org $
     -->
     
    <server>
     
       <!--
          The Default Dead Letter Queue. This destination is a dependency of an EJB MDB container.
       -->
     
       <mbean code="org.jboss.jms.server.destination.QueueService"
          name="jboss.messaging.destination:service=Queue,name=DLQ"
          xmbean-dd="xmdesc/Queue-xmbean.xml">
          <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          <depends>jboss.messaging:service=PostOffice</depends>
       </mbean>
     
       <!--
          The Default Expiry Queue.
       -->
     
       <mbean code="org.jboss.jms.server.destination.QueueService"
          name="jboss.messaging.destination:service=Queue,name=ExpiryQueue"
          xmbean-dd="xmdesc/Queue-xmbean.xml">
          <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          <depends>jboss.messaging:service=PostOffice</depends>
       </mbean>   
    </server>
    Voici le code qui plante :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <%-- 
        Document   : index.jsp
        Created on : 05 nov. 2008, 10:38:57
        Author     : Mickael
    --%>
    
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
       <%@ page import="java.util.*" %>
       <%@ page import="javax.ejb.*,
        javax.naming.*,
        javax.rmi.PortableRemoteObject,
        java.rmi.RemoteException,
        java.util.Date,
        java.text.DateFormat,
        java.text.SimpleDateFormat,
        javax.jms.QueueConnectionFactory,
        javax.jms.Connection,
        javax.jms.TextMessage,
        javax.jms.Session,
        javax.jms.MessageProducer" %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>LocationDVD</title>
        </head>
        <body>
            <h2>Calcul du cout de la location d'un dvd -v0.1</h2>
            <form action="index.jsp" method="get">
                <input  type="text" name="dateDebut">
                <input type="text" name="dateFin">
                <input type="submit" value="envoyer">
            </form>
            
            <%
                if(request != null) {
                // Code permettant la récupération des données du formulaire
                    String sDateDebut = request.getParameter("dateDebut");
                    String sDateFin = request.getParameter("dateFin");
                    
                    if((sDateDebut != null)&&(sDateFin != null)) {  
                   
                    //Recuperer contexte initial dans le serveur de noms JNDI
                    Context jndiContext = new InitialContext();
                    //Obtenir une instance de l'usine de connexions
                    javax.jms.ConnectionFactory connectionFactory = (QueueConnectionFactory)jndiContext.lookup("jms/LocationFactory");
                    //Obtenir une instance de la file de message
                    javax.jms.Queue queue = (javax.jms.Queue)jndiContext.lookup("jms/LocationQueue");
                    //Créer une connexion à l'aide de l'usine de connexions :
                    Connection connection = connectionFactory.createConnection();
                    // Créer un objet de session sur la connexion (sans transactions et avec un
                    //mode d'accusé de réception automatique) :
                    Session sessionQ = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
                    // Créer un message de type texte dans la session :
                    TextMessage message = sessionQ.createTextMessage();
                    //Mettre le texte correspondant aux données saisies dans le formulaire dans ce message. Par exemple :
                    message.setText(sDateDebut+"#"+sDateFin);
                    // Créer un objet de type producteur de messages sur la file de messages à l’aide de l’objet session :
                    MessageProducer messageProducer=sessionQ.createProducer(queue);
                    // Envoyer le message à l'aide de cet objet producteur de messages :    
                    messageProducer.send(message);
                    }
                }
            %>
            <h4>Le cout de la location est : <%//= cout%> € pour une duree de <%//= duree%> heure(s).</h4>
        </body>
    </html>

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Désolé, j'en était resté à JBoss 4.

    Effectivement, dans JBoss 5, le répertoire jms a été remplacé par le répertoire messaging, et c'est le fichier destinations-service.xml qui contient les queues et topics.

    Pour le ConnectionFactory, tu en as effectivement besoin pour le client qui envoie des messages. Tu le trouveras dans JNDI, sous le nom "ConnectionFactory".

  5. #5
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Petite précision, encore...

    Si tu ne veux pas, ou ne peux pas, modifier ton code, tu peux modifier la config de JBoss, pour que les noms correspondent à ce que tu attends.

    Pour la ConnectionFactory, c'est dans connection-factories-service.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          <attribute name="JNDIBindings">
             <bindings>
                <!-- Ajout ou remplacement des autres binding -->
                <binding>/jms/LocationFactory</binding>
             </bindings>
          </attribute>
    Pour la queue, c'est dans messaging-service.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          <attribute name="DefaultQueueJNDIContext">/jms</attribute>

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Points : 42
    Points
    42
    Par défaut
    Merci, j'avance ! L'usine de connexion fonctionne.

    Cependant j'ai un problème avec la Queue LocationQueue, il me dit que celle-ci is not bound.

    Pourtant, j'ai modifié le fichier messaging-service.xml avec ceci :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
         The JBoss Messaging service deployment descriptor.
    
         $Id: messaging-service.xml 3880 2008-03-14 15:55:42Z timfox $
     -->
    
    <server>
    
       <!-- ServerPeer MBean configuration
            ============================== -->
    
       <mbean code="org.jboss.jms.server.ServerPeer"
          name="jboss.messaging:service=ServerPeer"
          xmbean-dd="xmdesc/ServerPeer-xmbean.xml">
    
          <!-- The unique id of the server peer - in a cluster each node MUST have a unique value - must be an integer -->
    
          <attribute name="ServerPeerID">${jboss.messaging.ServerPeerID:0}</attribute>
          
          <!-- The default JNDI context to use for queues when they are deployed without specifying one --> 
          
          <attribute name="DefaultQueueJNDIContext">/queue</attribute>
    	  <attribute name="DefaultQueueJNDIContext">/jms</attribute>
    et le fichier destinations-service.xml avec ceci :
    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
    30
    31
    32
    33
    34
    35
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
         Messaging Destinations deployment descriptor.
    
         $Id: destinations-service.xml 81998 2008-12-03 06:46:29Z scott.stark@jboss.org $
     -->
    
    <server>
    
       <!--
          The Default Dead Letter Queue. This destination is a dependency of an EJB MDB container.
       -->
    
       <mbean code="org.jboss.jms.server.destination.QueueService"
          name="jboss.messaging.destination:service=Queue,name=DLQ"
          xmbean-dd="xmdesc/Queue-xmbean.xml">
          <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          <depends>jboss.messaging:service=PostOffice</depends>
       </mbean>
       
       <!--
          The Default Expiry Queue.
       -->
    
       <mbean code="org.jboss.jms.server.destination.QueueService"
          name="jboss.messaging.destination:service=Queue,name=ExpiryQueue"
          xmbean-dd="xmdesc/Queue-xmbean.xml">
          <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          <depends>jboss.messaging:service=PostOffice</depends>
       </mbean>
    
    	<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.mq.destination:service=Queue,name=LocationQueue"> 
    	</mbean>
    </server>
    J'ai vu cela sur le site de jboss ici : jboss

    J'ai oublié un paramètre ? Ce n'est pas la bonne syntaxe ?

  7. #7
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Je vois que je ne suis pas tout seul à mélanger JBoss 4 et 5.

    Tu devrais plutôt t'inspirer des autres queues déclarées juste au dessus. Ca donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       <mbean code="org.jboss.jms.server.destination.QueueService"
          name="jboss.messaging.destination:service=Queue,name=LocationQueue"
          xmbean-dd="xmdesc/Queue-xmbean.xml">
          <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          <depends>jboss.messaging:service=PostOffice</depends>
       </mbean>

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Points : 42
    Points
    42
    Par défaut
    Merci !

    ça fonctionne nikel !!!

    Le problème n'est pas tellement que je confonde les deux, c'est que je ne connais rien à JBoss en version 4 et 5 !

    Mais je te remercie ! Je vais pouvoir avancer !

  9. #9
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Je disais ça parce que ton lien faisait référence à une doc v4. Il faut regarder l'URL pour s'en rendre compte.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Points : 42
    Points
    42
    Par défaut
    Il y a quelque chose que je comprends pas par contre, tout fonctionne très bien sous NetBeans, et lorsque je lance le projet avec eclipse, on dirait qu'il ne lance pas le même script car j'ai l'erreur LocationFactory not bound.

    Eclipse a un soucis avec JBoss ?

  11. #11
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Je ne connais pas les différences, car je n'ai jamais utilisé le couple Netbeans / JBoss. En tout cas, Eclipse et JBoss sont habituellement compatibles, d'ailleurs RedHat Developer Studio est construit autour d'Eclipse.

    Vérifie bien dans les traces de lancement le "Server name". C'est la configuration qui est lancée. Normalement, c'est default. Vérifie ensuite si tes modifications ont bien été faites dans le répertoire de cette configuration.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 86
    Points : 42
    Points
    42
    Par défaut
    J'ai regardé, et j'ai remarqué qu'éclipse mettait le .war dans all comme configuré, mais lancait le serveur à partir du dossier default !

    Du coup j'ai mis ma configuration dans default et hop ça marche partout.

    Merci encore.

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

Discussions similaires

  1. Message Driven Bean avec JBoss
    Par ahmeddrira dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 19/04/2012, 14h30
  2. Message Driven Bean
    Par jockhip12 dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 1
    Dernier message: 17/04/2011, 21h05
  3. [EJB MDB] Démarrage conditionné d'un Message-Driven Bean
    Par Boojum dans le forum Java EE
    Réponses: 2
    Dernier message: 16/02/2010, 14h17
  4. [EJB MDB] Envoi de mail message-driven bean
    Par totofe dans le forum Java EE
    Réponses: 2
    Dernier message: 30/10/2009, 16h56
  5. JBoss 5.0, Eclipse, Message Driven Bean - Fichier jboss.xml
    Par GrooveRage dans le forum Wildfly/JBoss
    Réponses: 15
    Dernier message: 09/02/2009, 19h55

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