KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > servlet > MMBaseStartThread


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.servlet;
11
12 import org.mmbase.module.core.MMBase;
13 import org.mmbase.module.Module;
14 import org.mmbase.util.logging.Logging;
15 import org.mmbase.util.logging.Logger;
16 import javax.servlet.ServletException JavaDoc;
17
18 /**
19  * Seperate thread to init MMBase. This is because init() of Servlets and Filters must take little
20  * time, to not hold other web-apps. Init of MMBase may take indefinitely if e.g. the database is down.
21  *
22  * @version $Id: MMBaseStartThread.java,v 1.5 2005/11/30 15:58:04 pierre Exp $
23  * @author Michiel Meeuwissen
24  * @since MMBase-1.7
25  */

26 public class MMBaseStartThread extends Thread JavaDoc {
27
28     private static final Logger log = Logging.getLoggerInstance(MMBaseStartThread.class);
29     private MMBaseStarter starter;
30     public MMBaseStartThread(MMBaseStarter s) {
31         super("MMBase Start Thread");
32         starter = s;
33         setDaemon(true); // if init never ends, don't hinder destroy
34
}
35     public void run() {
36         synchronized(Module.class) {
37
38             if (starter.getMMBase() == null) {
39                 try {
40                     MMBase mmb = MMBase.getMMBase();
41                     if (mmb == null) {
42                         throw new Exception JavaDoc("getMMBase gave null");
43                     }
44                     starter.setInitException(null); // no error.
45
starter.setMMBase(mmb);
46                 } catch (Throwable JavaDoc e) {
47                     log.fatal("Could not instantiate the MMBase module! " + e.getClass().getName() + " " + e.getMessage());
48                     log.error(Logging.stackTrace(e));
49                     starter.setInitException(new ServletException JavaDoc(e));
50                 }
51             }
52
53         }
54     }
55
56 }
57
Popular Tags