KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > jetty > JettyWebContainer


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6
7 package org.jfox.jetty;
8
9 import java.io.File JavaDoc;
10
11 import org.jfox.ioc.ComponentContext;
12 import org.jfox.ioc.annotation.Managable;
13 import org.jfox.ioc.ext.ActiveComponent;
14 import org.jfox.ioc.ext.ManagableComponent;
15 import org.jfox.ioc.ext.ServicableComponent;
16 import org.mortbay.http.HttpContext;
17 import org.mortbay.j2ee.session.Manager;
18
19 /**
20  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
21  */

22
23 public class JettyWebContainer implements ManagableComponent, ServicableComponent, ActiveComponent, Runnable JavaDoc {
24     private JettyServer server;
25     private String JavaDoc jettyConfig = "./conf/jetty.xml";
26
27     private boolean started = false;
28
29     public JettyWebContainer() {
30
31     }
32
33     /**
34      * because jetty use Thread context classloader,
35      * so must start a new thread, and set the thread context class loader to Module LocalClassLoader
36      *
37      * @throws Exception
38      */

39     @Managable
40     public void start() throws Exception JavaDoc {
41         Thread JavaDoc thread = new Thread JavaDoc(this);
42         thread.start();
43
44         started = true;
45         thread.join();
46     }
47
48     @Managable
49     public void stop() throws Exception JavaDoc {
50         server.stop();
51         started = false;
52     }
53
54
55     public void run() {
56         // must set the thread context classloader to Module's LocalClassLoader
57
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
58         try {
59             File JavaDoc conf = new File JavaDoc(System.getProperty("jetty.home") + "/" + jettyConfig);
60             server = new JettyServer(conf.toURL());
61             if(server.getRootWebApp() == "null" || server.getRootWebApp().equals("")) {
62                 server.setRootWebApp("root");
63             }
64             server.start();
65
66         }
67         catch(Exception JavaDoc e) {
68             e.printStackTrace();
69         }
70     }
71
72     @Managable
73     public boolean isStarted() {
74         return started && server.isStarted();
75     }
76
77     @Managable
78     public String JavaDoc getConfiguration() {
79         return server == null ? null : server.getConfiguration();
80     }
81
82     public String JavaDoc getRootWebApp() {
83         return server == null ? null : server.getRootWebApp();
84     }
85
86     public void addContext(HttpContext context){
87         server.addContext(context);
88     }
89
90
91     public HttpContext getContext(String JavaDoc context){
92         return server.getContext(context);
93     }
94
95     public boolean removeContext(HttpContext context){
96         return server.removeContext(context);
97     }
98
99     public void setComponentContext(ComponentContext ctx) {
100         System.setProperty("jetty.home", ctx.getModuleDir());
101
102     }
103     public Manager getDistributableSessionManagerPrototype() {
104         return server.getDistributableSessionManagerPrototype();
105     }
106
107     public boolean getForceDistributable() {
108         return server.getForceDistributable();
109     }
110     public static void main(String JavaDoc[] args) throws Exception JavaDoc {
111         System.setProperty("jetty.home",".");
112         JettyWebContainer jetty = new JettyWebContainer();
113         jetty.start();
114     }
115 }
116
117
118
Popular Tags