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

Glassfish et Payara Java Discussion :

[Glassfish][EJB3 Stateless]Injection de dependance marche pas.


Sujet :

Glassfish et Payara Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Points : 57
    Points
    57
    Par défaut [Glassfish][EJB3 Stateless]Injection de dependance marche pas.
    Bonjour,

    j'ai un petit souci sous un serveur GlassFish.
    Je suis en train de lire un livre qui s'appelle EJB3 in action et j'aurai voulu une petite web-app pour faire un exemple réaliste.

    Donc j'ai crée un projet EAR qui m'a crée un projet WAR et un autre.

    Dans le war j'ai développé une petite interface sous Struts.
    A partir d'une action j'appelle un EJB qui est injecté par dépendance.
    Or l'injection ne doit pas marche je me retoure avec des NullPointerException à chaque fois. Mon code est ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.NullPointerException
            at org.bidool.EJBExample.Action.BidValidationAction.execute(BidValidationAction.java:43)

    J'ai aussi remarque une autre exception mais au lancement du serveur

    -----------------------------------------------------
    Mon action
    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
     
    public class BidValidationAction extends Action{
     
        @EJB
        private static PlaceBid placeBid;
     
        @Override
        public ActionForward execute(ActionMapping mapping,
                ActionForm form,
                HttpServletRequest request,
                HttpServletResponse response) throws Exception {
     
            System.out.println("------------------------ Tralalala" );
            FormBIDEntry formulaire = (FormBIDEntry) form;
            try{
                Bid bid = new Bid();
                bid.setBidAmount(Integer.parseInt(formulaire.getAmount() ));
                bid.setBidderID(Integer.parseInt(formulaire.getBidderID() ));
                bid.setItemID(Integer.parseInt(formulaire.getItemID() ));
                placeBid.addBid(bid); // ca foire ici
            }catch ( Exception e)
            {
                SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
                Date date = sdf.parse("17/04/1979");
     
                System.out.println("------------------------ Yop : " + date.toString());
                e.printStackTrace();
            }
     
     
            return mapping.findForward("success");
        }
     
    }
    -----------------------------------------------------
    Ma business interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    @Local
    public interface PlaceBid {
        public Bid addBid(Bid bid);
    }
    -----------------------------------------------------
    Mon implementation de 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
     
    @Stateful
    public class PlaceBidBean implements PlaceBid {
     
        // Add business logic below. (Right-click in editor and choose
        // "Insert Code > Add Business Method" or "Web Service > Add Operation")
        @Override
        public Bid addBid(Bid bid)
        {
            System.out.println(bid);
            return bid;
        }
     
    }
    -----------------------------------------

    Cordialement.
    AbdouPoulou

  2. #2
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Tout d'abord, pas de "static" nécessaire pour un champ injecté (je ne sais même pas si ça fonctionne). Ensuite le problème c'est qu'en Java EE 5 l'injection ne fonctionne que dans des composants dont le cycle de vie est géré par le conteneur: servlet, JSF managed bean, et EJB. Pour les autres cas, il faut utiliser JNDI.

    Tout ceci change avec Java EE 6, les managed beans et CDI (JSR 299).

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Points : 57
    Points
    57
    Par défaut
    Bonsoir,

    Merci pour ta réponse qui a été très rapide. Comme je pensais avoir une alerte, je n'ai pas pensé à vérifier que j'avais reçu des messages.

    En fait j'avais essayé avec et sans le static.(j'ai essay le static en désespoir de cause)
    Effectivement j'ai bien un JDK Java JEE 5.

    Par contre je ne comprends pas trop je pensais que les actions Struts avait un cycle de vie qui étaient aussi managé par le serveur.

    En tout merci je vais essayé de fouiller la piste JNDI.


    Merci pour ton aide.

    Abdou POULOU.

  4. #4
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Dans GlassFish, la commande "asadmin list-jndi-entries" te donnera le nom JNDI à utiliser lors d'un lookup. Tu peux aussi consulter cette FAQ EJB pour GlassFish.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Points : 57
    Points
    57
    Par défaut
    Merci pour les infos, j'ai mis un peu de tps à repondre du coup.
    Je regarde cette apres midi.

    Bonne Journée.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Points : 57
    Points
    57
    Par défaut Resolu
    Bonjour,

    J'avais oublié de mettre le message en résolu.
    Et je voulais aussi en profiter pour poster mettre la reference cette page :

    http://www.eclipsetotale.com/article...c_Eclipse.html

    Elle m'a permis d'appeler un EJb en 2 secondes.
    Entretemps je suis aussi passé sous JBoss car il me demandait moins de ressources.

    Bonne Journée

  7. #7
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Citation Envoyé par AbdouPoulou Voir le message
    Entretemps je suis aussi passé sous JBoss car il me demandait moins de ressources.
    Tu peux détailler? Quelle version de GlassFish / JBoss? Quelles "ressources"?

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Points : 57
    Points
    57
    Par défaut Precision Config
    (re)Bonjour,

    Pour être plus précis :
    J'avais :
    + Netbeans 6.7.1
    + Sun GlassFish Enterprise Server v2.1.1 ,
    qui me demander pas mal de ram et ressources processeur.

    Aujourdhui j'ai :
    + Eclipse 3.5
    + JBOSS 5.1.GA (install standard)
    Et avec la meme config mon ordi ram moins.
    Et depuis que j'ai rajouté un peu de 512 de ram Eclipse + JBoss marche nickel.

    J'ai une petite config Athlon Xp2600+ et 1Go de Ram. et maintenant 1.5 Go de Ram.

    Ce choix est plus dû à des questions de ressources que des questions de fonctionnalités.

    Voili Voilou.

  9. #9
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Merci pour le détail.
    Sache que GlassFish v3 est sorti (tout comme NetBeans 6.8) et consomme moins de mémoire.
    Ceci dit, je suis un peu étonné par rapport à cette analyse d'Antonio sur les empreintes mémoire. JBoss ne se distingue pas par sa faible consommation mémoire. C'est peut-être plus une question d'IDE que de serveur d'appli. Clairement 1.5GB c'est pas du luxe quelque soit l'environnement.

    Tu peux aussi faire de l'Eclipse avec GlassFish : http://download.java.net/glassfish/eclipse/

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Points : 57
    Points
    57
    Par défaut Glassfish + Eclipse
    Je viens de tester le couple Eclipse + GlassFish 2.1 et c'est vrai que c'est plus léger que NetBeans + GlassFish.
    Glassfish est plus rapide au demarrage et il n'a pas l'air moins reactif.

    Effectivement 1.5 Go c'est pas bcp. Je passe à 2GO la semaine prochaine.
    Antonio Goncalves (c'est l'initiateur du Paris Jug) à l'air assez connu je voulais justement lire son livre sur javaEE avec glassfish, il est super bien noté sur amazon.

    En tout cas merci pour ton aide.
    C'est génial.

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

Discussions similaires

  1. GlassFish ne marche pas dans Ubuntu
    Par isoman dans le forum Glassfish et Payara
    Réponses: 2
    Dernier message: 16/09/2011, 18h03
  2. Réponses: 2
    Dernier message: 10/09/2010, 14h35
  3. mes injections ne marche pas
    Par menoran dans le forum Oracle
    Réponses: 0
    Dernier message: 29/04/2010, 12h05
  4. Réponses: 1
    Dernier message: 24/07/2009, 10h59
  5. JSF injection EJB3 stateless
    Par nathieb dans le forum JSF
    Réponses: 3
    Dernier message: 04/02/2009, 10h06

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