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 :

Injecter un EJB dans un objet (annotation @EJB ?) [EJB]


Sujet :

Java EE

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut Injecter un EJB dans un objet (annotation @EJB ?)
    Bonjour,
    j'ai une servlet qui appelle un singleton :

    Ma servlet
    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
     
    public class FindAdministratorForumServlet extends HttpServlet {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	// ======================================
    	// = Entry point method =
    	// ======================================
    	@Override
    	protected void service(final HttpServletRequest request,
    			final HttpServletResponse response) throws ServletException,
    			IOException {
    		final int rows=3;
     
    		int page = Integer.parseInt(request.getParameter("page"));
     
    		List<Topic> discussionList = ListHandlerService.getForumTopics(page);
    Mon singleton :
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    package service;
     
    import java.util.LinkedList;
    import java.util.List;
    import java.util.ListIterator;
     
    import javax.ejb.EJB;
     
    import sessionbean.TopicService;
     
    import entitybean.Topic;
     
     
     
    public class ListHandlerService {
     
    	private final static int rows=3;
     
        /** L'instance statique */
        private static ListHandlerService instance;
        /** objet pour la synchronisation. 
         * j'ajoute deux "soulignés" (__) au nom de l'attribut car il n'a
         * qu'un intérêt purement technique.
         */
        private static Object objetSynchrone__;
     
        private static List<Topic> listTopic;
     
     
    	@EJB
    	private static TopicService discussionService;
     
        /** Récupère l'instance unique de la class Singleton.
        * Remarque : le constructeur est rendu inaccessible
        */
        public static ListHandlerService getInstance() {
            if (null == instance) { // Premier appel
                synchronized(objetSynchrone__) {
                    if (null == instance) {
                        instance = new ListHandlerService();
                    }
                }
            }
            return instance;
        }
     
        /** Constructeur redéfini comme étant privé pour interdire
        * son appel et forcer à passer par la méthode
        */
        private ListHandlerService() {
        }
     
        public static List<Topic> getForumTopics(int page) {
        	int i = 0;
    		Topic topic;
    		LinkedList<Topic> result = new LinkedList<Topic>();
        	if (page==1) {
     
        		listTopic = discussionService.getForumTopics();
        		ListIterator<Topic> listIterator = listTopic.listIterator();
     
        		while (listIterator.hasNext() && (i< rows)) {
        			topic = listIterator.next();
        			result.add(topic);
        			i++;
        		}
        	} else {
        		ListIterator<Topic> listIterator = listTopic.listIterator();
        		while (listIterator.hasNext() && (i< rows*(page-1))) { 
        			listIterator.hasNext();
        			i++;
        		}
        		while (listIterator.hasNext() && (i< rows*page)) {
        			topic = listIterator.next();
        			result.add(topic);
        			i++;
        		}
        	}
        	return result;
     
        }
     
        public static int getSize() {
        	return listTopic.size();
        }
     
     
    }
    Dans mon singleton qui est un objet JAVA pur, l'injection de mon EJB par l'annotation @EJB ne semble pas marcher. En effet à l'éxécution, "discussionService" qui devrait etre injecté et initialisé est null.
    Pouvez-vous me venir en aide ? merci

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    A vérifier, mais je pense que l'injection n'est possible que pour certains objets: ejb, servlet, bean jsf.

    Essaie avec un lookup.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut
    Merci pour ta réponse fr1man, en effet un look up fonctionne.

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

Discussions similaires

  1. Injection @EJB dans un Managed Beans
    Par Chabanus dans le forum JSF
    Réponses: 17
    Dernier message: 20/05/2010, 01h11
  2. Jboss : Injection d'EJB dans les servlets ! @EJB
    Par MaxLaMenaX dans le forum Wildfly/JBoss
    Réponses: 12
    Dernier message: 17/09/2009, 16h41
  3. 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
  4. injection EJB dans un validateur JSF
    Par drim dans le forum Seam
    Réponses: 3
    Dernier message: 09/01/2008, 17h13
  5. [EJB3] Injection @EJB dans le Client Web ne fonctionne pas
    Par warwink dans le forum Java EE
    Réponses: 9
    Dernier message: 04/12/2007, 00h28

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