KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > server > ServiceContainer


1 package com.quadcap.server;
2
3 /* Copyright 2000 - 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.BufferedInputStream JavaDoc;
42 import java.io.FileInputStream JavaDoc;
43 import java.io.FileReader JavaDoc;
44
45 import java.util.HashMap JavaDoc;
46 import java.util.Iterator JavaDoc;
47 import java.util.Properties JavaDoc;
48
49 import org.xml.sax.InputSource JavaDoc;
50
51 import com.quadcap.util.ConfigString;
52 import com.quadcap.util.Debug;
53
54 /**
55  * Main service container object.
56  *
57  * @author Stan Bailes
58  */

59 public class ServiceContainer {
60     static HashMap JavaDoc services = new HashMap JavaDoc();
61
62     /**
63      * Default constructor
64      */

65     public ServiceContainer() {}
66
67     /**
68      * Add the service with the specified name, class name, and config
69      * file.
70      *
71      * @param Exception may be thrown during service construction or
72      * initialization
73      */

74     public void addService(String JavaDoc serviceName, String JavaDoc serviceClass,
75                            Properties JavaDoc serviceProps)
76         throws Exception JavaDoc
77     {
78         Class JavaDoc sc = Class.forName(serviceClass);
79         Service service = (Service)sc.newInstance();
80         Debug.println(0, "Starting service: " + serviceName + ", config = " +
81                       serviceProps + ", service = " + service);
82         serviceProps.put("service.name", serviceName);
83         service.init(this, serviceProps);
84         services.put(serviceName, service);
85     }
86
87     /**
88      * Parse the server.xml file and load all the services defined therein.
89      */

90     public void init(String JavaDoc configFile) throws Exception JavaDoc {
91         ServerConfigParser p = new ServerConfigParser(this);
92         p.parse(configFile);
93     }
94
95     /**
96      * Return the service with the specified name
97      *
98      * @param name
99      */

100     public static Service getService(String JavaDoc name) {
101         return (Service)services.get(name);
102     }
103
104     /**
105      * Return an iterator of service names
106      */

107     public Iterator JavaDoc serviceNames() {
108         return services.keySet().iterator();
109     }
110
111     /**
112      * Main program: find config file and point the container at it.
113      */

114     public static void main(String JavaDoc[] args) {
115         try {
116             ServiceContainer c = new ServiceContainer();
117             ConfigString cs = ConfigString.find("server.config", "server.xml");
118             c.init(cs.toString());
119         } catch (Exception JavaDoc e) {
120             Debug.print(e);
121         }
122     }
123 }
124
Popular Tags