Slt à tous,
je suis tout nouveau dans le monde JSF avec Hibernate. Je suis entrain de tester une application et je recois l'erreur au bas de cette page.
J'ai fouillé le forum espérant trouver une solution à mon problème, malheursement sans succès. Qqn aurait-il une idée?
Merci d'avance.
Rod
Voici l'erreur:
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 2010-05-18 15:28:20,390 SEVERE [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-localhost%2F127.0.0.1-8089-1) JSF1054: (Phase ID: INVOKE_APPLICATION 5, View ID: /pages/login.jsp) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@4f9c0c] 2010-05-18 15:28:20,390 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/OnlineBanking].[Faces Servlet]] (http-localhost%2F127.0.0.1-8089-1) Servlet.service() for servlet Faces Servlet threw exception java.lang.NoClassDefFoundError: Could not initialize class bank.hibernate.HibernateUtil at bank.hibernate.HibernateFilter.doFilter(HibernateFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
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 public final class HibernateFilter implements Filter { static Log logger = LogFactory.getLog(HibernateFilter.class); /** * @see javax.servlet.Filter.destroy() */ public void destroy() { } /** * @see javax.servlet.Filter.init() */ public void init(FilterConfig arg0) throws ServletException { } /** * Time the processing that is performed by all subsequent filters in the * current filter stack, including the ultimately invoked servlet. * @param request The servlet request we are processing * @param result The servlet response we are creating * @param chain The filter chain we are processing * @exception IOException if an input/output error occurs * @exception ServletException if a servlet error occurs */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { // Pass control on to the next filter chain.doFilter(request, response); } finally { try { HibernateUtil.closeSession(); logger.debug("session closed!"); } catch (Exception e) { logger.warn("closeSession failed! : " + e.getMessage()); } } } /** * Return a String representation of this object. */ public String toString() { return this.getClass().getName(); } }
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 public class HibernateUtil { private static Log log = LogFactory.getLog(HibernateUtil.class); private static Configuration configuration; private static SessionFactory sessionFactory; private static final ThreadLocal<Session> threadSession = new ThreadLocal<Session>(); private static final ThreadLocal<Session> threadTransaction = new ThreadLocal<Session>(); // Create the initial SessionFactory from the default configuration files static { try { configuration = new Configuration(); sessionFactory = configuration.configure().buildSessionFactory(); // We could also let Hibernate bind it to JNDI: // configuration.configure().buildSessionFactory() } catch (Throwable ex) { // We have to catch Throwable, otherwise we will miss // NoClassDefFoundError and other subclasses of Error log.error("Building SessionFactory failed.", ex); throw new ExceptionInInitializerError(ex); } } /** * Returns the SessionFactory used for this static class. * * @return SessionFactory */ public static SessionFactory getSessionFactory() { /* Instead of a static variable, use JNDI: SessionFactory sessions = null; try { Context ctx = new InitialContext(); String jndiName = "java:hibernate/HibernateFactory"; sessions = (SessionFactory)ctx.lookup(jndiName); } catch (NamingException ex) { throw new RuntimeException(ex); } return sessions; */ return sessionFactory; } /** * Retrieves the current Session local to the thread. * <p/> * If no Session is open, opens a new Session for the running thread. * * @return Session */ public static Session getSession() { // With CMT, this should return getSessionFactory().getCurrentSession() and do nothing else Session s = (Session) threadSession.get(); if (s == null) { log.debug("Opening new Session for this thread."); s = getSessionFactory().openSession(); threadSession.set(s); } return s; } /** * Closes the Session local to the thread. */ public static void closeSession() { // Would be written as a no-op in an EJB container with CMT Session s = (Session) threadSession.get(); threadSession.set(null); if (s != null && s.isOpen()) { log.debug("Closing Session of this thread."); s.close(); } } /** * Start a new database transaction. */ public static void beginTransaction() { // Would be written as a no-op in an EJB container with CMT Transaction tx = (Transaction) threadTransaction.get(); if (tx == null) { log.debug("Starting new database transaction in this thread."); tx = getSession().beginTransaction(); threadTransaction.set((Session) tx); } } /** * Commit the database transaction. */ public static void commitTransaction() { // Would be written as a no-op in an EJB container with CMT Transaction tx = (Transaction) threadTransaction.get(); try { if ( tx != null && !tx.wasCommitted() && !tx.wasRolledBack() ) { log.debug("Committing database transaction of this thread."); tx.commit(); } threadTransaction.set(null); } catch (HibernateException ex) { rollbackTransaction(); throw ex; } } /** * Rollback the database transaction. */ public static void rollbackTransaction() { // Would be written as a no-op in an EJB container with CMT (maybe setRollBackOnly...) Transaction tx = (Transaction) threadTransaction.get(); try { threadTransaction.set(null); if ( tx != null && !tx.wasCommitted() && !tx.wasRolledBack() ) { log.debug("Tyring to rollback database transaction of this thread."); tx.rollback(); } } finally { closeSession(); } } }
Partager