TP JMS question 3

Conception de logiciels Intranet : patrons et canevas

Modérateurs : Douin, graffion

Fujimoto
Messages : 13
Inscription : 02 oct. 2016 15:02

TP JMS question 3

Message par Fujimoto » 30 avr. 2017 11:56

Bonjour,

A la question 3 du TP JMS, pour le DurableSubscriber, lorsque je lance le test unitaire, j'ai une exception qui est levée "javax.naming.NoInitialContextException" au niveau de cette ligne:

priseDeRDV = new PriseDeRDV("agenda_tests");

Dans le constructeur de PriseDeRDV, j'initialise bien le contexte de cette manière:
Hashtable<String,String> props = new Hashtable<String,String>();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.exolab.jms.jndi.InitialContextFactory");
props.put(Context.PROVIDER_URL, "tcp://localhost:3035/");

contexte = new InitialContext(props);

Fujimoto
Messages : 13
Inscription : 02 oct. 2016 15:02

Re: TP JMS question 3

Message par Fujimoto » 30 avr. 2017 11:59

(désolé, suite à une fausse manipulation mon message s'est posté avant d'avoir fini de le rédiger).

J'ai créé une classe avec un main pour tester le code du test unitaire dans la console et cela marche. Je reçois bien le message.

Est-ce que quelqu'un a eu le même problème avec le test unitaire? Je n'arrive pas à comprendre pourquoi j'ai cette exception.

TSwank
Messages : 15
Inscription : 05 juin 2014 11:03

Re: TP JMS question 3

Message par TSwank » 30 avr. 2017 13:43

Bonjour,

Même chose ici.
Je pense que c'est parce que les tests JUnit n'ont pas accès à l'instance de openJMS.
Pour contourner le problème, j'ai utilisé cette classe :

Code : Tout sélectionner

package question3;

import question2.*;
import javax.naming.*;
import javax.jms.*;
import java.util.Hashtable;
import java.util.concurrent.*;
import java.util.Date;

public class UnScenario{
  public static void main(String[] args) throws Exception{
    SynchronousQueue<RendezVous> queue1,queue2,queue3;
    Souscription s1=null,s2=null,s3=null;
    PriseDeRDV priseDeRDV=null;
    queue1 = new SynchronousQueue<RendezVous>();
    try{

      priseDeRDV = new PriseDeRDV("agenda_tests");
      RendezVous r1 = new RendezVous(new Date(40000L),"test");
      priseDeRDV.publier(r1);
      System.out.println("envoi !!!" + r1);

      s1 = new SouscriptionDurable("agenda_tests","durable3"){
        public void onMessage(Message message){
          try{
            RendezVous rdv = (RendezVous)((ObjectMessage)message).getObject();
            System.out.println("recu !!!" + rdv);
            queue1.put(rdv);
          }catch(Exception e) {
          }
        }
      };

      RendezVous r = queue1.poll(2L, TimeUnit.SECONDS);
      System.out.println("recu !!!" + r);

    }catch(Exception e){
      e.printStackTrace();
    }finally {
      s1.close();
      priseDeRDV.close();
    }
  }
}
Exécuté à partir de la console avec : java -cp .:[chemin openJMS]/lib/openjms-0.7.7-beta-1.jar question3.UnScenario

Thomas

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité