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

Struts 1 Java Discussion :

[le retour du débutant] la nested exception qui fait mal


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Points : 48
    Points
    48
    Par défaut [le retour du débutant] la nested exception qui fait mal
    Bonjour à tous !

    Alors voila, c'est encore moi que voila avec mes foutus exceptions (alala quel boulet celui là)

    Enfin bon, erreur très bête si sa se trouve mais elle n'en sera que plus simple à résoudre.

    Synopsis : c'est l'histoire d'une classe Action qui fait ça ...

    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
    package gest_livr_appli.Action;
     
    import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import gest_livr_appli.EJB.Delegate.LivraisonDelegate;
    import java.util.Collection;
    import java.util.ArrayList;
    import gest_livr_appli.DTO.*;
    import gest_livr_appli.ActionForm.*;
    import java.lang.String;
     
    public class doSaisieDemandeLivraisonAction
        extends Action {
     
      String natstar = "NatStar";
     
      public ActionForward execute(ActionMapping actionMapping,
                                   ActionForm actionForm,
                                   HttpServletRequest httpServletRequest,
                                   HttpServletResponse httpServletResponse) throws
          Exception {
     
        TypeLivraisonActionForm selectTypeDemandeActionForm = (TypeLivraisonActionForm) actionForm;
     
     
          LivraisonDelegate livraisonDelegate = new LivraisonDelegate();
     
          /* Récupération des valeurs de la classe Environnement_Livraison
              et création du formuaire qui va servir à les contenir */
     
         EnvironnementLivraisonDto[] envLivraisonDtos = livraisonDelegate.environnementLivraisonFindAll();
         System.out.println(envLivraisonDtos.length);
      /*    EnvironnementLivraisonActionForm selectTypeEnvActionForm = new
              EnvironnementLivraisonActionForm();*/
     
          /* Récupération de la valeur saisie dans le formulaire de choix du type */
     
     
          /* Test du type de demande choisi */
          if (selectTypeDemandeActionForm.getLibType().matches(natstar)) {
            // on rempli le champ environnement
        //    Collection envList = new ArrayList();
        /*    for (int i = 0; i < envLivraisonDtos.length; i++) {
              envList.add(envLivraisonDtos[i].getLibEnvironnement());
            }*/
     
            // on colle le tout dans le formulaire
     //       selectTypeEnvActionForm.setenvListCollection(envList);
     
            // on retourne la bonne page
            return (actionMapping.findForward("saisieDemande"));
          }
          else {
            return (actionMapping.findForward("impasse"));
          }
        }
      }
    Mais caché derrière, non pas une forêt, mais cette ligne de code (je l'ai testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnvironnementLivraisonDto[] envLivraisonDtos = livraisonDelegate.environnementLivraisonFindAll();
    ... surgi d'un coup la vilaine exception suivante !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.rmi.RemoteException: EJB Exception: ; nested exception is: 
    	javax.ejb.EJBException
    Fin de l'histoire ?

    Faut-il absolument que la collection de Dtos soit utilisée dans la JSP pour que ça fonctionne ? Si j'ai viré le try, catch c'était justement pour voir le code de l'exception.

    Merki encore, vous êtes des boss .

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    et a quoi elle ressemble ta classe LivraisonDelegate ?

    parce que manifestement ca vient de la methode environnementLivraisonFindAll()

    fais peter le code ...

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Voila je fais péter tout le code du delegate :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    package gest_livr_appli.EJB.Delegate;
     
    import gest_livr_appli.EJB.Locator.ServiceLocator;
    import gest_livr_appli.EJB.Locator.ServiceLocatorException;
    import gest_livr_appli.EJB.Session.LivraisonSessionFacadeHome;
    import gest_livr_appli.EJB.Session.LivraisonSessionFacade;
    import gest_livr_appli.DTO.LivraisonDto;
    import java.math.BigDecimal;
    import gest_livr_appli.DTO.TypeLivraisonDto;
    import gest_livr_appli.DTO.EnvironnementLivraisonDto;
     
    public class LivraisonDelegate {
      private LivraisonSessionFacadeHome livraisonSessionFacadeHome;
      private LivraisonSessionFacade livraisonSessionFacade;
     
      public LivraisonDelegate() throws Exception {
     
        /* L'appel du constructeur du delegate permet l'appel de la fonction
         * qui initialise la session */
     
        initializeLivraisonSessionFacadeHome();
        livraisonSessionFacade = livraisonSessionFacadeHome.create();
      }
     
      public void createLivraison(LivraisonDto livraisonDto) throws Exception {
        livraisonSessionFacade.createLivraison(livraisonDto);
      }
     
      public void removeLivraison(BigDecimal numero) throws Exception {
        livraisonSessionFacade.removeLivraison(numero);
      }
     
      public void removeLivraison(LivraisonDto livraisonDto) throws Exception {
        livraisonSessionFacade.removeLivraison(livraisonDto);
      }
     
      public void updateLivraison(LivraisonDto livraisonDto) throws Exception {
        livraisonSessionFacade.updateLivraison(livraisonDto);
      }
     
      public void updateLivraisons(LivraisonDto[] livraisonDtos) throws Exception {
        livraisonSessionFacade.updateLivraisons(livraisonDtos);
      }
     
      public LivraisonDto livraisonFindByPrimaryKey(BigDecimal numero) throws
          Exception {
        return livraisonSessionFacade.livraisonFindByPrimaryKey(numero);
      }
     
      // Appel de la fonction typeLivraisonFindAll de la session
     
      public TypeLivraisonDto[] typeLivraisonFindAll() throws
        Exception {
        return livraisonSessionFacade.typeLivraisonFindAll();
    }
     
    public EnvironnementLivraisonDto[] environnementLivraisonFindAll() throws
        Exception {
      return livraisonSessionFacade.environnementLivraisonFindAll();
    }
     
      private void initializeLivraisonSessionFacadeHome() throws Exception {
        String FACADE_NAME = "LivraisonSessionFacade";
        Class FACADE_CLASS = gest_livr_appli.EJB.Session.LivraisonSessionFacadeHome.class;
        if (livraisonSessionFacadeHome == null) {
          try {
            ServiceLocator locator = ServiceLocator.getInstance();
            livraisonSessionFacadeHome = (LivraisonSessionFacadeHome) locator.
                getEjbHome(FACADE_NAME, FACADE_CLASS);
            if (livraisonSessionFacadeHome == null) {
              throw new Exception("Did not get home for " + FACADE_NAME);
            }
          }
          catch (ServiceLocatorException e) {
            throw new Exception(e.getMessage());
          }
        }
      }
    }

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Bon il manque encore des choses, car il y'a plusieurs possibilites d'erreurs avec tes ejbs.
    Ca peut etre a l'initialisation de ton session facade ou ton session facade home.

    mais aussi dans cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    livraisonSessionFacade.environnementLivraisonFindAll()
    Conclusion, il faudrait :
    * la trace complete de l'erreur, ainsi que le log, avant l'erreur.
    * le code de LivraisonSessionFacadeHome et LivraisonSessionFacade

    et peut etre en debuguant tu peux identifier le lieu ou ca deconne ...

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Bon bah problème résolu ... décidemment chui vraiment mauvais. Enfin bon je met quand même la solution au cas où y aurait d'autres boulets comme moi sur ce forum

    Donc qd vous avez cette exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.rmi.RemoteException: EJB Exception: ; nested exception is: 
    	javax.ejb.EJBException
    qui surgi dans votre Delegate, vérifier bien que vous avez dans votre bean :

    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
    public class LivraisonSessionFacadeBean
        implements SessionBean {
      SessionContext sessionContext;
      private LivraisonHome livraisonHome;
      TypeLivraisonHome typeLivraisonHome;
      // ça je l'avais oublié ->
      EnvironnementLivraisonHome environnementLivraisonHome;
     
    ...
     
    public void setSessionContext(SessionContext sessionContext) {
        this.sessionContext = sessionContext;
        try {
          findLivraisonHome();
          findTypeLivraisonHome();
         // ça aussi ->
          findEnvironnementLivraisonHome();
        }
     
    ...
     
    // ET SURTOUT ça AUSSI !
      private void findEnvironnementLivraisonHome() throws EJBException {
       final String ENTITY_NAME = "java:comp/env/ejb/environnementLivraison";
       if (environnementLivraisonHome == null) {
         try {
           EJBHomeFactory ejbHomeFactory = EJBHomeFactory.getInstance();
           environnementLivraisonHome = (EnvironnementLivraisonHome) ejbHomeFactory.
               lookupByLocalEJBReference(ENTITY_NAME);
         }
         catch (Exception ex) {
           throw new EJBException(ex.getMessage());
         }
       }
     }
    Voila, c'était la minute du boulet
    Merci bien pour votre aide (?)

  6. #6
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    et sinon , pour les EJBs ya un forum dedié

    http://www.developpez.net/forums/forumdisplay.php?f=304

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

Discussions similaires

  1. requête qui fait mal à la tête
    Par noumian dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/06/2010, 20h28
  2. Réponses: 1
    Dernier message: 22/09/2005, 17h15
  3. [Débutant(e)]Les exceptions
    Par Samanta dans le forum Langage
    Réponses: 10
    Dernier message: 06/07/2005, 16h43
  4. [SQL] une requete qui fait mal a la tete
    Par MailOut dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/02/2005, 17h22

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