KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openejb > tomcat > TomcatLoader


1 /**
2  *
3  * Copyright 2005 The Apache Software Foundation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.openejb.tomcat;
18
19 import org.openejb.OpenEJB;
20 import org.openejb.loader.Loader;
21 import org.openejb.loader.SystemInstance;
22 import org.openejb.server.ServerFederation;
23 import org.openejb.server.ServiceException;
24 import org.openejb.server.ejbd.EjbServer;
25
26 import javax.servlet.ServletConfig JavaDoc;
27 import javax.servlet.ServletContext JavaDoc;
28 import javax.servlet.ServletException JavaDoc;
29 import javax.servlet.ServletInputStream JavaDoc;
30 import javax.servlet.ServletOutputStream JavaDoc;
31 import javax.servlet.http.HttpServletRequest JavaDoc;
32 import javax.servlet.http.HttpServletResponse JavaDoc;
33 import java.io.File JavaDoc;
34 import java.io.IOException JavaDoc;
35 import java.util.Enumeration JavaDoc;
36 import java.util.Properties JavaDoc;
37
38 /**
39  * @version $Revision$ $Date$
40  */

41 public class TomcatLoader implements Loader {
42
43     private EjbServer ejbServer;
44
45     public void init(ServletConfig JavaDoc config) throws ServletException JavaDoc {
46         // Not thread safe
47
if (OpenEJB.isInitialized()) {
48             ejbServer = (EjbServer) SystemInstance.get().getObject(this.ejbServer.getClass().getName());
49             return;
50         }
51
52         Properties JavaDoc p = new Properties JavaDoc();
53         p.setProperty("openejb.loader", "tomcat");
54
55         Enumeration JavaDoc enumeration = config.getInitParameterNames();
56         System.out.println("OpenEJB init-params:");
57         while (enumeration.hasMoreElements()) {
58             String JavaDoc name = (String JavaDoc) enumeration.nextElement();
59             String JavaDoc value = config.getInitParameter(name);
60             p.put(name, value);
61             System.out.println("\tparam-name: " + name + ", param-value: " + value);
62         }
63
64         String JavaDoc loader = p.getProperty("openejb.loader"); // Default loader set above
65
if (loader.endsWith("tomcat-webapp")) {
66             ServletContext JavaDoc ctx = config.getServletContext();
67             File JavaDoc webInf = new File JavaDoc(ctx.getRealPath("WEB-INF"));
68             File JavaDoc webapp = webInf.getParentFile();
69             String JavaDoc webappPath = webapp.getAbsolutePath();
70
71             setPropertyIfNUll(p, "openejb.base", webappPath);
72             setPropertyIfNUll(p, "openejb.configuration", "META-INF/openejb.xml");
73             setPropertyIfNUll(p, "openejb.container.decorators", TomcatJndiSupport.class.getName());
74             setPropertyIfNUll(p, "log4j.configuration", "META-INF/log4j.properties");
75         }
76
77         try {
78             init(p);
79         } catch (Exception JavaDoc e) {
80             e.printStackTrace();
81         }
82     }
83
84     public void init(Properties JavaDoc props) throws Exception JavaDoc {
85         SystemInstance.init(props);
86         ejbServer = new EjbServer();
87         SystemInstance.get().setObject(ejbServer.getClass().getName(), ejbServer);
88         OpenEJB.init(props, new ServerFederation());
89         ejbServer.init(props);
90     }
91
92     private Object JavaDoc setPropertyIfNUll(Properties JavaDoc properties, String JavaDoc key, String JavaDoc value) {
93         String JavaDoc currentValue = properties.getProperty(key);
94         if (currentValue == null) {
95             properties.setProperty(key, value);
96         }
97         return currentValue;
98     }
99
100     public void service(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
101         ServletInputStream JavaDoc in = request.getInputStream();
102         ServletOutputStream JavaDoc out = response.getOutputStream();
103         try {
104             ejbServer.service(in, out);
105         } catch (ServiceException e) {
106             throw new ServletException JavaDoc("ServerService error: " + ejbServer.getClass().getName() + " -- " + e.getMessage(), e);
107         }
108     }
109 }
110
Popular Tags