Bonjour à tous,
Voici la hiérarchie de mon application
CompteServlet.java
build.xml
WEB-INF
|
-> web.xml, application.xml, ejb-bar.xml
COMPTE
|
-> compte.java, comptebean.java, comptehome.java
CLIENT
|
-> CompteClient.java, index.html
A partir de ca je crée un war avec le build xml et un ant classique.
Je déploie mon WAR sur un serveur Jonas.
A partir de là quand je lance mon appli j'atteri bien sur ma page index.html.
Mais quand je valide le formulaire je devrais appeler mon servlet qui devrait aller chercher l'EJB pour ouvrir le compte, et permettre ensuite l'ajout.
Hors là voici l'erreur enfin les erreurs :d:
Donc je repère que ca doit concerner mon Lookup a première vue, puis ma fonction getCompteRef et ensuite la dernière je ne vois pas trop.
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
90
91
92
93
94
95
96
97
98 Erreur javax.naming.NameNotFoundException javax.naming.NameNotFoundException at org.objectweb.jonas.naming.CompNamingContext.lookupCtx(CompNamingContext.java:766) at org.objectweb.jonas.naming.CompNamingContext.lookup(CompNamingContext.java:197) at org.objectweb.jonas.naming.CompNamingContext.lookup(CompNamingContext.java:198) at org.objectweb.jonas.naming.CompNamingContext.lookup(CompNamingContext.java:198) at org.objectweb.jonas.naming.java.javaURLContext.lookup(javaURLContext.java:176) at javax.naming.InitialContext.lookup(InitialContext.java:392) at CompteServlet.init(Unknown Source) at javax.servlet.GenericServlet.init(GenericServlet.java:256) at sun.reflect.GeneratedMethodAccessor105.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:114) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:662) ENTRE DANS POST Erreur java.lang.NullPointerException java.lang.NullPointerException at CompteServlet.getConfigRef(Unknown Source) at CompteServlet.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245) at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:662) 2012-03-06 16:56:49,890 : StandardWrapperValve.invoke : Servlet.service() for servlet CompteServlet threw exception java.lang.NullPointerException at CompteServlet.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245) at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:662)
Je vous met les code des principaux fichiers si vous pouviez m'aider, je ne comprend pas quel chemin je dois mettre pour mon Lookup dans un premier temps.
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
90
91
92 import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.rmi.PortableRemoteObject; import javax.servlet.ServletException; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Properties; import CompteServlet.Compte; import CompteServlet.CompteHome; public class CompteServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; private CompteHome compteHome; private Compte myCompte; // à l'initialisation de la servlet, on récupère la référence de // linterface Home de Config public void init() throws ServletException { Context initialContext = null; try { initialContext = new InitialContext(); compteHome = (CompteHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/Compte"),CompteHome.class); myCompte = compteHome.create(); myCompte.initCompte(); System.out.println("La servlet s'est connecté au serveur JNDI local a récupéré la référence de l'interface Home distant de Config"); } catch (NamingException e) { System.out.println("Erreur " + e); e.printStackTrace(); } catch (CreateException e) { System.out.println("Erreur " + e); e.printStackTrace(); } catch (RemoteException e) { System.out.println("Erreur " + e); e.printStackTrace(); } } // cette méthode récupère de l'objet session la référence // d'un EJB Config; sil nen existe pas, lEJB Config est créé // et stocké dans lobjet session pour un usage futur private Compte getCompteRef(HttpServletRequest req) { Object ac = null; try { HttpSession session = req.getSession(true); ac = session.getAttribute("ConfigREF"); if (ac == null) { ac = compteHome.create(); session.setAttribute("ConfigREF", ac); } } catch (Exception e) { System.out.println("Erreur " + e); e.printStackTrace(); } return (Compte) ac; } /*public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println ("ENTRE DANS GET") ; response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); Compte compte = getCompteRef(request); }*/ public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { System.out.println ("ENTRE DANS POST") ; response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); myCompte = getCompteRef(request); if(!request.getParameter("ajout").equals("")){ int ajout=Integer.parseInt(request.getParameter("ajout")); myCompte.setDepot(ajout); } if(!request.getParameter("retrait").equals("")){ int retrait=Integer.parseInt(request.getParameter("retrait")); myCompte.setRetrait(retrait); } out.println("<html><head><title>Gestion de compte</title></head><body><form method=\"POST\" action=\"http://localhost:9000/CompteServlet\"><center>Tapez le montant que vous voulez ajouter à votre compte : <input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à votre compte : <input name=retrait type=text><br><br><br><input type=submit value=Validez></form></body></html>"); out.flush() ; out.close() ; } }
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 <?xml version='1.0' encoding='UTF-8'?> <application xmlns=" http://java.sun.com/xml/ns/j2ee" version=" 1.4" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" > <description xml:lang=" fr"> Application description</description> <display-name xml:lang=" fr"> ConfigApp.ear</display-name> <module> <ejb> ejb-jar-ic.jar</ejb> </module> <module> <web> <web-uri> war-ic.war</web-uri> <context-root> /compte</context-root> </web> </module> </application>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version='1.0' encoding='UTF-8'?> <ejb-jar xmlns=" http://java.sun.com/xml/ns/j2ee" version=" 2.1" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd "> <display-name xml:lang=" fr" > CompteServlet </display-name> <enterprise-beans> <session> <ejb-name> CompteBean</ejb-name> <home> CompteHome</home> <remote> Compte</remote> <ejb-class> CompteBean</ejb-class> <session-type> Stateful</session-type> <transaction-type> Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>
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 <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name> WebApp </display-name> <servlet> <servlet-name> CompteServlet</servlet-name> <display-name> CompteServlet</display-name> <servlet-class> CompteServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name> CompteServlet</servlet-name> <url-pattern> /CompteServlet</url-pattern> </servlet-mapping> </web-app>Merci d'avance!
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 <?xml version="1.0" encoding="ISO-8859-1"?> <project name="FirstCompte" basedir="." default="deploy"> <property name="project.libs" value="/home1/sl771476/Jonas4.8/JONAS_4_8_2/lib/" /> <property name="classes.dir" value="./classes" /> <property name="deploy.dir" value="/home1/sl771476/Jonas4.8/JONAS_4_8_2/deploy" /> <property name="src.dir" value="."></property> <path id="base.path"> <fileset dir="${project.libs}"> <include name="**/*.jar" /> </fileset> </path> <target name="clean" description="Delete all generated files"> <delete dir="${classes.dir}" /> </target> <target name="compile" description="Compiles the Task"> <mkdir dir="${classes.dir}" /> <javac srcdir="${src.dir}" destdir="${classes.dir}"> <classpath> <path refid="base.path" /> </classpath> </javac> </target> <!--<target name="deploy" description="JARs the Task" depends="compile"> <jar destfile="${ant.project.name}.jar"> <metainf dir="${src.dir}/META-INF" /> <fileset dir="${classes.dir}"> <include name="**/*.class" /> </fileset> </jar> </target> --> <target name="undeploy" description="Undeploy jar from server"> <delete file="${deploy.dir}/${ant.project.name}.jar" /> </target> <target name="deploy" description="WARs the Task" depends="compile"> <war destfile="${ant.project.name}.war"> <webinf dir="${src.dir}/WEB-INF" /> <fileset dir="${src.dir}/Client"/> <fileset dir="${classes.dir}"> <exclude name="**/web.xml" /> </fileset> </war> </target> </project>
Partager