[SERVLET][EJB][Noob]Utiliser mon SERVLET avec mon EJB

Utiliser mon SERVLET avec mon EJB [SERVLET][EJB][Noob] - Java - Programmation

Marsh Posté le 14-04-2005 à 18:03:42    

Bonjour à tous,
Voici mon problème, j'ai crée un session bean qui fonctionne(dont les fochiers ce trouve en bas) et j'aimerai utiliser un SERVLET (ici après) qui demanderai dans la "text box" du fichier servlet.html le profile du user et afficherai une fois uppuyer sur le bouton "submit" les différentes fonctions et modules auxquels il a accès. Mais voilà sa ne fonctionne pas.
 
Voici les différents fichiers qui pourraient vous donner une idée de mon problème. Car moi je vous avoue je suis perdu
 
On va commencer par le principal mon fichier servlet.java:

Code :
  1. package cecusesproject;
  2. import javax.naming.*;
  3. import javax.rmi.PortableRemoteObject;
  4. import javax.servlet.*;
  5. import javax.servlet.http.*;
  6. import java.io.*;
  7. import java.util.*;
  8. import java.util.Vector;
  9. import javax.naming.Context;
  10. import javax.rmi.PortableRemoteObject;
  11. public class Servlet extends HttpServlet {
  12.   private CECUSes cECUSes = null;
  13.   private CECUSesHome cECUSesHome = null;
  14.  
  15.   public Servlet() {
  16.     try {
  17.       jbInit();
  18.     }
  19.     catch (Exception ex) {
  20.       ex.printStackTrace();
  21.     }
  22.   }
  23.   private static final String CONTENT_TYPE = "text/html";
  24.   //Initialize global variables
  25.   public void init() throws ServletException {
  26.     try {
  27.     Context ctx = new InitialContext();
  28.     Object ref = ctx.lookup("cECUSes" );
  29.     cECUSesHome = (CECUSesHome) PortableRemoteObject.narrow(ref, CECUSesHome.class);
  30.     }
  31.     catch (Exception e) {
  32.              e.printStackTrace();
  33.            }
  34.   } // end init()
  35.   //Process the HTTP Get request
  36.   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  37.     //User profile name
  38.     String profileName = request.getParameter("ProfileName" );
  39.     if (profileName == null) {
  40.       profileName = "No profile's name was submited !";
  41.     }
  42.   }
  43.   //Process the HTTP Post request
  44.   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  45.     doGet(request, response);
  46.     boolean chk = false;
  47.     Vector mod =  new Vector();
  48.     Vector fct =  new Vector();
  49.     String N_M = "1";
  50.     String N_P = "2";
  51.     String N_F = "Go to reporting";
  52.     String profileName = request.getParameter("ProfileName" );
  53.     if (profileName == null) {
  54.     profileName = "No profile's name was submited !";
  55.     }
  56.     response.setContentType(CONTENT_TYPE);
  57.     PrintWriter out = response.getWriter();
  58.     try {
  59.        cECUSes = cECUSesHome.create();
  60.     }
  61.     catch (Exception e){
  62.           e.printStackTrace();
  63.     }
  64.     //invocation des methodes metier check(), getModules() et getFCT().
  65.     chk = cECUSes.check(N_M,N_F,profileName);
  66.     mod = cECUSes.getModules(N_P);
  67.     fct = cECUSes.getFCT(N_M,N_P);
  68.     out.println("<html>" );
  69.     out.println("<h1>Servlet Proximus</h1>" );
  70.     out.println("<body bgcolor=\"#ABACD5\">" );
  71.     out.println("<p>You are a, " );
  72.     out.println(profileName);
  73.     out.println("<p>You have access to Module(s) :" );
  74.     out.println(mod);
  75.     out.println("<p>You have access to Functionalitie(s) :" );
  76.     out.println(fct);
  77.     out.println("</body></html>" );
  78.   }
  79.   //Clean up resources
  80.   public void destroy() {
  81.   }
  82.   private void jbInit() throws Exception {
  83.   }
  84. }


 
Et voici l'erreur qu'il me renvoi lorsque je fais un RUN du fichier servlet.html:

Code :
  1. javax.naming.NameNotFoundException: Unable to resolve 'cECUSes' Resolved ; remaining name 'cECUSes'
  2. at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:897)
  3. at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:230)
  4. at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:154)
  5. at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:188)
  6. at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:256)
  7. at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:359)
  8. at javax.naming.InitialContext.lookup(InitialContext.java:347)
  9. at cecusesproject.Servlet.init(Servlet.java:31)
  10. at javax.servlet.GenericServlet.init(GenericServlet.java:258)
  11. at weblogic.servlet.internal.ServletStubImpl$ServletInitAction.run(ServletStubImpl.java:1028)
  12. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
  13. at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
  14. at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:904)
  15. at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:883)
  16. at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:822)
  17. at weblogic.servlet.internal.ServletStubImpl.reloadServlet(ServletStubImpl.java:734)
  18. at weblogic.servlet.internal.ServletStubImpl.checkForReload(ServletStubImpl.java:699)
  19. at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:539)
  20. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:373)
  21. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
  22. at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
  23. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
  24. at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
  25. at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
  26. at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
  27. at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
  28. at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
  29. java.lang.NullPointerException
  30. at cecusesproject.Servlet.doPost(Servlet.java:62)
  31. at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
  32. at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  33. at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
  34. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
  35. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
  36. at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
  37. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
  38. at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
  39. at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
  40. at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
  41. at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
  42. at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
  43. <Apr 14, 2005 5:24:20 PM CEST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=23922586,name=CECUWebModule,context-path=/CECUWebModule)] Servlet failed with Exception
  44. java.lang.NullPointerException
  45. at cecusesproject.Servlet.doPost(Servlet.java:68)
  46. at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
  47. at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  48. at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
  49. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
  50. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
  51. at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
  52. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
  53. at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
  54. at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
  55. at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
  56. at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
  57. at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
  58. >


 
Voilà sa fait énormément de place je sais, j'espère que je peux me permettre de mettre autant ! :sweat:  
 
Si il faut je peux fournir les fichiers de mon EJB si vous jugez cela nécéssaire.
 
Voilà si quelqu'un peu m'aider, sa serai volontié, car là je bloque grave
Merci d'avance à tous. :jap:

Reply

Marsh Posté le 14-04-2005 à 18:03:42   

Reply

Marsh Posté le 14-04-2005 à 18:30:00    

oué alors, donc,  

Citation :

javax.naming.NameNotFoundException: Unable to resolve 'cECUSes'

aurait suffi: ton ejb est pas déployé, ou en tous cas ta servlet arrive pas à l'atteindre. t'es sur de ton jndi name ?
 
Apprendre à cerner un problème


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2005 à 10:54:50    

Sorry, je remarque bien le mal que sa peux faire une tonne de code pour rien, mais comme je suis un noob, bah j'ai un peu de mal a cerner le problème, c'est pour sa que j'ai tout mi.
Encor sorry.
 
Bon voilà, mon ejb est bien déployé, le make fonctionne bien, et le problème arrive toujours au moment du test du fichier servlet.html.
Le nom de GNDI est <jndi-name>CECUSes</jndi-name>.
Et j'ai changé mon code par ceci :

Code :
  1. Object ref = ctx.lookup("CECUSes" );


Donc jusque là tout va bien il me semble, mais voilà ce qu'il m'affiche maintenant.

Code :
  1. java.lang.NullPointerException
  2. at cecusesproject.Servlet.doPost(Servlet.java:62)


Code :
  1. <Apr 15, 2005 10:50:44 AM CEST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=16065256,name=CECUWebModule,context-path=/CECUWebModule)] Servlet failed with Exception
  2. java.lang.NullPointerException
  3. at cecusesproject.Servlet.doPost(Servlet.java:68)


 
 
Voilà j'espère avoir mieux cerné le problème à présent, merci a toi si tu sais m'aider !
Et déjà merci a toi pour ton aide actuelle, ciao ciao

Reply

Marsh Posté le 15-04-2005 à 11:39:07    

Voilà j'ai modifié mon code par ceci :

Code :
  1. ...
  2.   public void init() throws ServletException {
  3.     try {
  4.     Context ctx = new InitialContext();
  5.     Object ref = ctx.lookup("CECUSes" );
  6.     cECUSesHome = (CECUSesHome) PortableRemoteObject.narrow(ref, CECUSesHome.class);
  7.     if (logging) {
  8.       System.out.println("Succeeded initializing bean access through Home interface." );
  9.       }
  10.     }
  11.     catch (Exception e) {
  12.              e.printStackTrace();
  13.              if (logging) {
  14.                log("Failed initializing bean access." );
  15.              }
  16.      }
  17.   } // end init()
  18.   //Process the HTTP Get request
  19.   public CECUSes create() {
  20.       try {
  21.        cECUSes = cECUSesHome.create();
  22.          if(logging){
  23.             System.out.println("Succeeded: create()" );
  24.          }
  25.       }
  26.       catch (Exception e){
  27.           if (logging) {
  28.              System.out.println("Failed: create()" );
  29.           }
  30.        e.printStackTrace();
  31.       }
  32.       if(logging){
  33.          System.out.println("Return value from create()" + cECUSes + "." );
  34.          }
  35.     return cECUSes;
  36.   }
  37.   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  38.     //User profile name
  39.     String profileName = request.getParameter("ProfileName" );
  40.     if (profileName == null) {
  41.       profileName = "No profile's name was submited !";
  42.     }
  43.   }
  44.   //Process the HTTP Post request
  45.   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  46.     doGet(request, response);
  47.     boolean chk = false;
  48.     Vector mod =  new Vector();
  49.     Vector fct =  new Vector();
  50.     String N_M = "1";
  51.     String N_P = "2";
  52.     String N_F = "Go to reporting";
  53.     String profileName = request.getParameter("ProfileName" );
  54.     if (profileName == null) {
  55.     profileName = "No profile's name was submited !";
  56.     }
  57.     response.setContentType(CONTENT_TYPE);
  58.     PrintWriter out = response.getWriter();
  59.     //invocation des methodes metier check(), getModules() et getFCT().
  60.     chk = cECUSes.check(N_M,N_F,profileName);
  61.     mod = cECUSes.getModules(N_P);
  62.     fct = cECUSes.getFCT(N_M,N_P);
  63.     out.println("<html>" );
  64.     out.println("<h1>Servlet Proximus</h1>" );
  65.     out.println("<body bgcolor=\"#ABACD5\">" );
  66.     out.println("<p>You are a, " );
  67.     out.println(profileName);
  68.     if (chk == true){
  69.     out.println("<p>You have access to Module(s) :" );
  70.     out.println(mod);
  71.     out.println("<p>You have access to Functionalitie(s) :" );
  72.     out.println(fct); 
  73.     }
  74.     else{
  75.     out.println("<p>You do not have access to Module(s) :" );
  76.     out.println(mod);
  77.     out.println("<p>You do not have access to Functionalitie(s) :" );
  78.     out.println(fct);
  79.     }
  80.     out.println("</body></html>" );
  81.   }
  82. ...


 
Et sa va mieux j'ai moins d'erreurs à présent, il ne m'en reste plus qu'une :

Code :
  1. java.lang.NullPointerException
  2. at cecusesproject.Servlet.doPost(Servlet.java:87)


 
Et cette fameuse ligne 87 est la suivante :

Code :
  1. chk = cECUSes.check(N_M,N_F,profileName);


 
Vraisemblement cECUSes est inconnu pour lui, il reçoit null ! :heink:  
 
Comment pourrais je faire ??? Merci a vous :jap:

Reply

Marsh Posté le 15-04-2005 à 11:47:39    

t'as pas oublier d'invoquer ta methode create() avant l'execution de cette ligne? car, tel que je vois le code ceECUSes est bien null

Reply

Marsh Posté le 15-04-2005 à 12:08:51    

Oui cECUSes est bien null,
Par contre je veux bien invoquer ma methode create(), mais comment?
 
Merci a toi, sorry de la bète question à 2 cents mais chui un noob  :whistle:

Reply

Marsh Posté le 15-04-2005 à 12:13:37    

en lisant en tuto :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2005 à 12:22:37    

tu l'invoques simplement en l'appelant: create(); au debut de ta methode doPost() par exemple


Message édité par sebi le 15-04-2005 à 12:23:23
Reply

Marsh Posté le 15-04-2005 à 12:29:01    

Merci pour l'idée du Tuto, c'est ce que je n'arrète pas de faire,...
 
Pour moi il me semble quand meme que je l'ai fait dans mon dernier post à la ligne 20.
Pour moi elle serait invoquée !
Si c'est pas le cas dites le moi, merci ciao

Reply

Marsh Posté le 15-04-2005 à 12:33:35    

c'est pas le cas.
 
 elle est pas appele dans doPost(), elle est faite mais elle sert a rien la .


---------------
IVG en france
Reply

Marsh Posté le 15-04-2005 à 12:33:35   

Reply

Marsh Posté le 15-04-2005 à 12:37:30    

Merci a vous sebi2706 et uriel, j'ai mis ma méthode create dans mon doPost() et sa marche  :jap:  
 
Super sympa :bounce:

Reply

Marsh Posté le 05-06-2009 à 11:03:28    

j`ai unpb comment en appel un ejb a partir d`une servlet

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed