KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > http > server22 > WebServlet


1  package com.quadcap.http.server22;
2
3 /* Copyright 1999 - 2003 Quadcap Software. All rights reserved.
4  *
5  * This software is distributed under the Quadcap Free Software License.
6  * This software may be used or modified for any purpose, personal or
7  * commercial. Open Source redistributions are permitted. Commercial
8  * redistribution of larger works derived from, or works which bundle
9  * this software requires a "Commercial Redistribution License"; see
10  * http://www.quadcap.com/purchase.
11  *
12  * Redistributions qualify as "Open Source" under one of the following terms:
13  *
14  * Redistributions are made at no charge beyond the reasonable cost of
15  * materials and delivery.
16  *
17  * Redistributions are accompanied by a copy of the Source Code or by an
18  * irrevocable offer to provide a copy of the Source Code for up to three
19  * years at the cost of materials and delivery. Such redistributions
20  * must allow further use, modification, and redistribution of the Source
21  * Code under substantially the same terms as this license.
22  *
23  * Redistributions of source code must retain the copyright notices as they
24  * appear in each source code file, these license terms, and the
25  * disclaimer/limitation of liability set forth as paragraph 6 below.
26  *
27  * Redistributions in binary form must reproduce this Copyright Notice,
28  * these license terms, and the disclaimer/limitation of liability set
29  * forth as paragraph 6 below, in the documentation and/or other materials
30  * provided with the distribution.
31  *
32  * The Software is provided on an "AS IS" basis. No warranty is
33  * provided that the Software is free of defects, or fit for a
34  * particular purpose.
35  *
36  * Limitation of Liability. Quadcap Software shall not be liable
37  * for any damages suffered by the Licensee or any third party resulting
38  * from use of the Software.
39  */

40
41 import java.io.IOException JavaDoc;
42
43 import java.util.Enumeration JavaDoc;
44 import java.util.Properties JavaDoc;
45
46 import javax.servlet.Servlet JavaDoc;
47 import javax.servlet.ServletConfig JavaDoc;
48 import javax.servlet.ServletContext JavaDoc;
49 import javax.servlet.ServletException JavaDoc;
50 import javax.servlet.ServletRequest JavaDoc;
51 import javax.servlet.ServletResponse JavaDoc;
52 import javax.servlet.SingleThreadModel JavaDoc;
53
54 import com.quadcap.util.Debug;
55
56 /**
57  * Represents a configured servlet, whether active or not. If we implemented
58  * servlet garbage collection, we would free the servlet resources from
59  * here.
60  *
61  * @author Stan Bailes
62  */

63 public class WebServlet implements ServletConfig JavaDoc {
64     WebApplication app;
65     Servlet JavaDoc servlet = null;
66     boolean singleThreadModel = false;
67     String JavaDoc servletName;
68     String JavaDoc servletClass;
69     String JavaDoc jspFile;
70     int loadOnStartup = -1;
71     Properties JavaDoc initParams = new Properties JavaDoc();
72
73     public WebServlet() {
74     }
75
76     public String JavaDoc toString() {
77         return servletName;
78     }
79     
80     public void setServletName(String JavaDoc name) {
81         this.servletName = name;
82     }
83
84     public String JavaDoc getServletName() {
85         return servletName;
86     }
87
88     public void setServletClass(String JavaDoc name) {
89         this.servletClass = name;
90     }
91
92     public String JavaDoc getServletClass() {
93         return servletClass;
94     }
95
96     public void setJspFile(String JavaDoc name) {
97         this.jspFile = name;
98     }
99
100     public String JavaDoc getJspFile() {
101         return jspFile;
102     }
103
104     public void setLoadOnStartup(int loadOnStartup) {
105         this.loadOnStartup = loadOnStartup;
106     }
107
108     public int getLoadOnStartup() {
109         return loadOnStartup;
110     }
111
112     public void addInitParam(String JavaDoc prop, String JavaDoc val) {
113         initParams.setProperty(prop, val);
114     }
115
116     public Enumeration JavaDoc getInitParameterNames() {
117         return initParams.keys();
118     }
119
120     public String JavaDoc getInitParameter(String JavaDoc name) {
121         return initParams.getProperty(name);
122     }
123
124     public void setWebApplication(WebApplication app) {
125         this.app = app;
126     }
127
128     public WebApplication getWebApplication() {
129         return app;
130     }
131
132     public ServletContext JavaDoc getServletContext() {
133         return app;
134     }
135
136 // public void setServlet(Servlet servlet) {
137
// this.servlet = servlet;
138
// }
139

140 // public Servlet getServlet() {
141
// return servlet;
142
// }
143

144     final void init() throws ServletException JavaDoc {
145         synchronized (this) {
146             if (servlet == null) {
147                 try {
148                     Class JavaDoc c = app.getClassLoader().loadClass(servletClass);
149                     Servlet JavaDoc s = (Servlet JavaDoc)c.newInstance();
150                     singleThreadModel = (s instanceof SingleThreadModel JavaDoc);
151                     s.init(this);
152                     servlet = s;
153                 } catch (ServletException JavaDoc e) {
154                     throw e;
155                 } catch (Throwable JavaDoc t) {
156                     Debug.print(t);
157                     throw new ServletException JavaDoc(t.toString());
158                 }
159             }
160         }
161     }
162     
163     public void service(ServletRequest JavaDoc req, ServletResponse JavaDoc res)
164         throws ServletException JavaDoc, IOException JavaDoc
165     {
166         if (servlet == null) init();
167         if (singleThreadModel) {
168             synchronized (servlet) {
169                 servlet.service(req, res);
170             }
171         } else {
172             servlet.service(req, res);
173         }
174     }
175 }
176
Popular Tags