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

Java EE Discussion :

Problème de renvoi d'information MDB-> Stateless [EJB2]


Sujet :

Java EE

  1. #1
    Invité
    Invité(e)
    Par défaut Problème de renvoi d'information MDB-> Stateless
    Bonjour,

    Je dois faire des jeux d'essais avec différentes versions des EJB.
    J'essaye de faire remonter des informations via mon MDB vers un bean session stateless pour renvoyer à la couche présentation que le message a bien été reçu par le MDB.

    Le MDB consomme bien un message (je l'ai vu via l'interface d'administration de mon serveur); mais apparement l'information de retour est perdue quelquepart en route.

    J'avais choisi d'appeler mon bean session depuis le MDB et de lui passer un indicateur comme quoi il avait reçu le message.

    Méthode onMessage de mon MDB:

    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 void onMessage(Message msg)
      {
          TextMessage message = null;
          try {
     
     
            if (msg instanceof TextMessage) {
                message = (TextMessage) msg;
                FacadeLocalHome home;
                FacadeLocal local;
                Context contexte =InitContext.getContext().getInitialContext();
                home= (FacadeLocalHome) contexte.lookup("java:comp/env/ejb/local/Facade");
                local = (FacadeLocal)home.create();
                local.setMessageInd(true);
                local.setMessage(message.getText());
            } 
     
              } catch (Throwable te) {
                  te.printStackTrace();
              }
          }
    Méthode d'appel (qui est situé sur le même bean session que celui qui doit recevoir l'information résultat)

    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 void sendMessage() {
        try{
            Context contexte =InitContext.getContext().getInitialContext();
     
            //Insertion d'un message dans le bean message
             QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)
                 contexte.lookup("jms/maConnectionFactory");
             Queue queue = (Queue)contexte.lookup("jms/demoQueue");
              QueueConnection queueConnection = 
                  queueConnectionFactory.createQueueConnection();
              QueueSession queueSession =
                  queueConnection.createQueueSession(false,
                  Session.AUTO_ACKNOWLEDGE);
              QueueSender queueSender = queueSession.createSender(queue);
              TextMessage message = queueSession.createTextMessage();
              message.setText("Bonjour!");
              queueSender.send(message);
     
            }catch(JMSException e) {throw new EJBException(e.toString());
            }catch (NamingException e){throw new EJBException("Error looking up home", e);}
        }
    Récupération au niveau de la couche présentation des informations:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Context context =InitContext.getContext().getInitialContext();
            // Récupération de la référence à l'ActionForm de recherche associé à cette Action
            TesteurForm leForm = (TesteurForm) form;   
     
              //envoi du message
              home= (FacadeLocalHome) context.lookup("java:comp/env/ejb/local/Facade");
              local = (FacadeLocal)home.create();
              local.sendMessage();
     
              //récupération du résultat
              leForm.setMessage(local.isMessageInd());
              leForm.setLeMessage(local.getMessage());
    Une idée d'où j'aurais merdouillé? Je suis loin d'être familier avec les EJB et encore moins avec JMS

  2. #2
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    Tu appelles un stateless SB !

    ==> Pas de maintien de l'état entre 2 instances d'un bean.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je pensais que les variables des stateless étaient communes entre toutes les entités et que si on modifiait l'état d'une variable sur un ca transmettait aux autres.

    Hmmm, ouais vu comme ca

    Bon dans ce cas je me limiterais à l'apperçu dans l'interface d'administration pour contrôler que l'envoi s'est bien passé.

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

Discussions similaires

  1. renvoi d'information : problème
    Par zabdaniel dans le forum Langage
    Réponses: 2
    Dernier message: 11/12/2007, 16h39
  2. [PHP-JS] Eviter le renvoi d'informations
    Par Him dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 16h24
  3. [Javascript]on focus et renvoi d'informations
    Par mavina dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/06/2006, 12h11
  4. [PHP-JS] Comment forcer le renvoi d'informations ?
    Par jejerome dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 09h55
  5. [servlet][JSP] renvoi d'informations
    Par deldin dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/06/2004, 13h44

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