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 :

Problème d'injection d'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 Problème d'injection d'EJB
    Bonjour,

    je fais un tutoriel EJB

    J'ai un stateless session bean dans un module EJBTutorielEJB que je declate remote et local en même temps


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Local
    public interface LibrarySessionBeanLocal {
     
    	void addBook(String bookname);
     
    	List<String> getBooks();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @Remote
    public interface LibrarySessionBeanRemote extends LibrarySessionBeanLocal{
     
    }
    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
     
    @Stateless
    public class LibrarySessionBean implements LibrarySessionBeanRemote {
     
    	private List<String> bookShelf;
     
    	/**
             * Default constructor.
             */
    	public LibrarySessionBean() {
    		// TODO Auto-generated constructor stub
    		bookShelf = new ArrayList<String>();
    		//this.getClass().getAnnotation(PoolClass.class)
    	}
     
    	@Override
    	public void addBook(String bookname) {
    		bookShelf.add(bookname);
    	}
     
    	@Override
    	public List<String> getBooks() {
    		return bookShelf;
    	}
     
    }
    J'ai un module web avec une servlet dans un module web EJBTutorialWeb (j'ai ajouté le module EJBTutorialEJB dans le classpath de EJBTutorialWeb)

    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
     
    @WebServlet(name="ServletCallSessionBean", urlPatterns={"/test"})
    public class ServletCallSessionBean extends HttpServlet {
     
    	@EJB(beanName = "LibrarySessionBean")
    	private LibrarySessionBeanLocal monBean;
     
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		response.setContentType("text/html;charset=UTF-8");
    		try {
    			Thread.sleep(120000);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		processRequest(request, response);
    	}
     
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		processRequest(request, response);
    	}
     
    	@Override
    	public String getServletInfo() {
    		return "Ma servlet de test";
    	}
     
    }
    Or quand je lance JBoss, j'ai l'erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014543: Aucun EJB trouvé dans l'interface de type 'com.tutorialspoint.sessionbean.stateless.LibrarySessionBeanLocal' ayant pour nom 'LibrarySessionBean' pour la liaison com.tutorialspoint.servlet.ServletCallSessionBean/monBean
    Auriez-vous une idée ? Merci d'avance pour vos réponse

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu as essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Stateless(name="LibrarySessionBean")
    ?

  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
    Bonjour tchize_ et merci pour ta réponse,

    oui, j'ai essayé, et j'ai toujours la même erreur

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    ou quelque chose comme ceci:
    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
    @Stateless
    @LocalBean
    public class LibrarySessionBean implements LibrarySessionBeanRemote {
     
    	private List<String> bookShelf;
     
    	/**
    	 * Default constructor.
    	 */
    	public LibrarySessionBean() {
    		// TODO Auto-generated constructor stub
    		bookShelf = new ArrayList<String>();
    		//this.getClass().getAnnotation(PoolClass.class)
    	}
     
    	@Override
    	public void addBook(String bookname) {
    		bookShelf.add(bookname);
    	}
     
    	@Override
    	public List<String> getBooks() {
    		return bookShelf;
    	}
     
    }
    et
    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
    @WebServlet(name="ServletCallSessionBean", urlPatterns={"/test"})
    public class ServletCallSessionBean extends HttpServlet {
     
    	@EJB
    	private LibrarySessionBean monBean;
     
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		response.setContentType("text/html;charset=UTF-8");
    		try {
    			Thread.sleep(120000);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		processRequest(request, response);
    	}
     
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		processRequest(request, response);
    	}
     
    	@Override
    	public String getServletInfo() {
    		return "Ma servlet de test";
    	}
     
    }
    Eric

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    A vrai dire, ce serait plutôt ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Stateless public class LibrarySessionBean implements LibrarySessionBeanRemote, LibrarySessionBeanLocal
    {
    
       ...
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    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
    Bonjour à tous et merci pour votre temps.

    C'est finalement de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @Stateless(name = "LibrarySessionBean")
    @Local(LibrarySessionBeanLocal.class)
    @Remote(LibrarySessionBeanRemote.class)
    @LocalBean
    public class LibrarySessionBean implements LibrarySessionBeanRemote, LibrarySessionBeanLocal{
     
    	private List<String> bookShelf;
     
    	/**
             * Default constructor.
             */

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Juste pour info, ceci aurait suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Stateless(name = "LibrarySessionBean")
    public class LibrarySessionBean implements LibrarySessionBeanRemote, LibrarySessionBeanLocal
    {
        ...
    }
    Sinon, tu pouvais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Stateless(name = "LibrarySessionBean")
    @Local(LibrarySessionBeanLocal.class)
    @Remote(LibrarySessionBeanRemote.class)
    public class LibrarySessionBean
    {
        ...
    }
    Dans ton cas, l'erreur venait du fait que ton EJB implémentait uniquement l'interface Remote et que ta servlet référençait l'interface Local -> Aucun EJB n'y fait référence
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [EJB3.1] Injection avec @ejb et problème de java.lang.NullPointerException
    Par ensatTetouan dans le forum Java EE
    Réponses: 1
    Dernier message: 04/03/2012, 03h00
  2. problème d'injection @EJB
    Par Damien2888 dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 20/02/2009, 13h24
  3. [EJB][Jboss] problème de déploiment d'EJB session
    Par 17mounir dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 13/03/2006, 01h16
  4. [EJB]JBoss et JNDI, problème pour trouver mes EJB
    Par shingo dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 31/12/2005, 15h14
  5. [Ant] [Ejb] Probléme de création d'ejb avec Genic
    Par rivierem dans le forum JOnAS
    Réponses: 7
    Dernier message: 25/06/2004, 16h21

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