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 :

Injection dans un bean


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut Injection dans un bean
    Je cherche à injecter un session bean dans mon prog de test mais celui-ci n'est pas invoker

    a la place d'écrire le code de cette manière :

    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
     
    /*
     * Hello.java
     *
     * Created on 11. février 2007, 07:41
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package com.test.page;
     
    import com.test.ejb.entity.NewEntity;
    import com.test.ejb.entity.NewEntityFacade;
    import com.test.ejb.entity.NewEntityFacadeLocal;
    import java.util.Iterator;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.ejb.EJB;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import net.sf.click.Page;
    import net.sf.click.control.Column;
    import net.sf.click.control.Table;
     
    /**
     *
     * @author alex
     */
    public class Hello extends Page {
     
        public Table tableToto = new Table();;    
        private NewEntityFacadeLocal newsEntityFacade;
        private int index, max, rowByPage;
     
        /** Creates a new instance of Hello */
        public Hello() {        
            if (newsEntityFacade == null) newsEntityFacade = lookupNewEntityFacade();
            tableToto.setClass("simple");
            tableToto.setPageSize(40);
            tableToto.setName("tableToto");
            tableToto.addColumn(new Column("id"));
            tableToto.addColumn(new Column("title"));
            tableToto.addColumn(new Column("body"));
            index = 0;
            max = newsEntityFacade.count();
            rowByPage = tableToto.getPageSize();
            tableToto.setRowCount(max / rowByPage);
        }
     
        public void onRender() {        
            index = tableToto.getPageNumber() * rowByPage ;
            List<NewEntity> news = newsEntityFacade.findByIndex(index, rowByPage);        
            tableToto.setRowList(news);
     
        }
     
        private NewEntityFacadeLocal lookupNewEntityFacade() {
            try {
                Context c = new InitialContext();
                return (NewEntityFacadeLocal) c.lookup("java:comp/env/ejb/NewEntityFacade");
            }
            catch(NamingException ne) {
                Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
                throw new RuntimeException(ne);
            }
        }
     
        public void onDestroy() {
            newsEntityFacade = null;
        }
     
     
    }
    J'aimerais utilisé l'injection d'EJB :

    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
     
    /*
     * Hello.java
     *
     * Created on 11. février 2007, 07:41
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package com.test.page;
     
    import com.test.ejb.entity.NewEntity;
    import com.test.ejb.entity.NewEntityFacade;
    import com.test.ejb.entity.NewEntityFacadeLocal;
    import java.util.Iterator;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.annotation.Resource;
    import javax.ejb.EJB;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import net.sf.click.Page;
    import net.sf.click.control.Column;
    import net.sf.click.control.Table;
     
    /**
     *
     * @author alex
     */
    public class Hello extends Page {
     
        public Table tableToto = new Table();    
        @EJB private NewEntityFacadeLocal newsEntityFacade;    
        @Resource private InitialContext context;
     
        private int index, max, rowByPage;
     
        /** Creates a new instance of Hello */
        public Hello() {        
            tableToto.setClass("simple");
            tableToto.setPageSize(40);
            tableToto.setName("tableToto");
            tableToto.addColumn(new Column("id"));
            tableToto.addColumn(new Column("title"));
            tableToto.addColumn(new Column("body"));
            index = 0;
            max = newsEntityFacade.count();
            rowByPage = tableToto.getPageSize();
            tableToto.setRowCount(max / rowByPage);
        }
     
        public void onRender() {        
            index = tableToto.getPageNumber() * rowByPage ;
            List<NewEntity> news = newsEntityFacade.findByIndex(index, rowByPage);        
            tableToto.setRowList(news);
        }
     
     
        public void onDestroy() {
            newsEntityFacade = null;
        }
     
     
    }
    Mais mon EJB session est nul. Quelqu'un aurait une idée ?

  2. #2
    Membre expérimenté Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Par défaut
    Elle réside où cette instance de Hello? C'est quoi Page?
    Tu ne bénéficiera de l'injection de resources dans un environnement "managé". Maintenant il me semble qu'il existe des "framework" d'injection pour ton appli client proposé par différent vendeur. Il me semble que j'ai lu quelque chose à ce sujet de la part de Bill Burke, mais si je me souviens bien, même lui ne savais pas exactement quoi
    Alex

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Citation Envoyé par a.snaps
    Elle réside où cette instance de Hello? C'est quoi Page?
    Tu ne bénéficiera de l'injection de resources dans un environnement "managé". Maintenant il me semble qu'il existe des "framework" d'injection pour ton appli client proposé par différent vendeur. Il me semble que j'ai lu quelque chose à ce sujet de la part de Bill Burke, mais si je me souviens bien, même lui ne savais pas exactement quoi
    Alex
    Hello, je te remercie premièrement de t'interresser à la problématique
    le but d EJB 3 est de justement d'apporter le principe d'injection sans passer par
    l'utilisation de fichiers de conf comme Spring,

    Mais en utilisant les annotations Java.

  4. #4
    Membre expérimenté Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Par défaut
    Merci de cette mise au point.
    Je suis très bien au courant des spéfications EJB 3 lol.
    Mais je réitère ma question c'est quoi Page?

    Tu n'as de l'injection de resource que dans des Instances managées! C'est à dire une Servlet (specs 2.5 uniquement), managed-bean JSF, autre EJB (SFSB, SLSB, ...) et ainsi de suite. Donc tu n'auras une resource injectée dans ton Instance de Hello que si celle-ci est managée :/

    Donc c'est quoi Page? et tout ça réside où? qui instancies...
    Alex

    PS: Spring 2 a des alternatives @annotation au fichier XML!

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Page c est une sorte de bean qui represente une page sous Click Framework
    http://click.sourceforge.net/

  6. #6
    Membre expérimenté Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Par défaut
    Je connais pas le framework, mais le diagramme de séquence sur la page "Pages" du site indique que c'est la servlet qui instancie ton instance de Hello extends Page, si je comprends bien... Donc: pas d'injection.
    Alex

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/05/2013, 02h02
  2. [Framework] Injection d'un bean dans un filter
    Par beeeeeennnnnn dans le forum Spring
    Réponses: 3
    Dernier message: 13/02/2012, 15h37
  3. Réponses: 4
    Dernier message: 25/05/2011, 09h23
  4. Injection de dépendance dans un Bean (MVC)
    Par clem_alain dans le forum Java EE
    Réponses: 8
    Dernier message: 08/02/2011, 10h58
  5. Weblogic 10.0 : injection d'EJB dans managed bean JSF
    Par loic38_01 dans le forum Weblogic
    Réponses: 1
    Dernier message: 05/09/2008, 13h46

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