Bonjour j'ai un problème qui concerne netbeans 5.5, un EJB3 et l'AS Jboss 4.0.4 (d'où un problème pour savoir dans quelle section poster )

Pour l'instant je fais juste un test c'est à dire que dans une servlet, j'appelle une méthode d'un session bean qui renvoie juste un "hello world", ce message sera ensuite envoyé sur une page web ou un mobile.

Mais quand je l'invoque il me sort ce problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
java.lang.RuntimeException: javax.naming.NameNotFoundException: ejb not bound
	HitServlet.lookupHelloSessionBean(HitServlet.java:85)
	HitServlet.doGet(HitServlet.java:35)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
En fait le bug survient quand j'invoque le bean (plus précisement au moment du lookup) qui se trouve dans la même JVM que la 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
21
22
23
24
25
26
 
avec les imports nécessaires..
 
// JNDI
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
// SERVLET
import javax.servlet.*;
import javax.servlet.http.*;
//EJB
import sessionPackage.HelloSessionLocal;
import javax.ejb.EJB;
 
// le code de la servlet blabla
 
private HelloSessionLocal lookupHelloSessionBean() {
        try {
            Context c = new InitialContext();
            return (HelloSessionLocal) c.lookup("java:comp/env/ejb/HelloSessionBean");
        }
        catch(NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
            throw new RuntimeException(ne);
        }
    }

Normalement il y a les bonnes annotations dans mes beans, ce qui permet de se passer d'un fichier de configuration (enfin je crois).

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
package sessionPackage;
 
import javax.ejb.Stateless;
 
/**
 *
 * @author toomsounet
 
 
 */
@Stateless(name="HelloSessionBean")
public class HelloSessionBean implements sessionPackage.HelloSessionLocal {
 
    /** Creates a new instance of HelloSessionBean */
    public HelloSessionBean() {
    }
 
    public String helloSession(){
 
        return "Hello World";
    }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
package sessionPackage;
 
import javax.ejb.Local;
 
 
/**
 * This is the business interface for HelloSession enterprise bean.
 */
@Local
public interface HelloSessionLocal {
    String helloSession();
 
}
quand je déploie mon projet, je peux lire entre autre les lignes suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
15:02:33,171 INFO  [Ejb3Deployment] EJB3 deployment time took: 15
15:02:33,171 INFO  [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=IHMDAMLUDO.ear,jar=IHMDAMLUDO-ejb.jar,name=HelloSessionBean,service=EJB3 with dependencies:
15:02:33,187 INFO  [EJBContainer] STARTED EJB: sessionPackage.HelloSessionBean ejbName: HelloSessionBean
15:02:33,187 INFO  [EJB3Deployer] Deployed: file:/C:/jboss-4.0.4.GA/server/default/tmp/deploy/tmp40632IHMDAMLUDO.ear-contents/IHMDAMLUDO-ejb.jar
Tout parait correct mais encore une fois je débute.

Je comprends pas pourquoi il n'arrive pas à trouver le bean.

Help please