ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/ClientMain.java
Revision: 1.12
Committed: Wed Mar 14 01:34:21 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.11: +32 -4 lines
Log Message:
New dependency checking. The old method was to attempt to start a Component, and
if it failed, it probably had a depdency problem. The approach now is to ask the
Component to perform a dependency check first, then if this suceeds, have a go
at actually starting it up.
The actual dependency check is a bit neater and more precise than before, and
should be much more fool proof. The order the components are specified in the
default.properties file is now irrelevant, although the "correct" order would
certainly increase booting time.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.client;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.clientinterface.*;
6 import uk.ac.ukc.iscream.componentmanager.*;
7 import uk.ac.ukc.iscream.core.*;
8 import uk.ac.ukc.iscream.util.*;
9
10 /**
11 * A startup component for the Local Clients.
12 *
13 * @author $Author: ajm4 $
14 * @version $Id: ClientMain.java,v 1.11 2001/03/02 05:42:39 ajm4 Exp $
15 */
16 public class ClientMain implements Component {
17
18 //---FINAL ATTRIBUTES---
19
20 /**
21 * The current CVS revision of this class
22 */
23 public static final String REVISION = "$Revision: 1.11 $";
24
25 /**
26 * The friendly name for this component, used by
27 * all related classes.
28 */
29 public static final String NAME = "LocalClient";
30
31 //---STATIC METHODS---
32
33 //---CONSTRUCTORS---
34
35 //---PUBLIC METHODS---
36
37 /**
38 * This starts the Local Client component
39 */
40 public void start() throws ComponentStartException {
41 // get references to key objects
42 _refman = ReferenceManager.getInstance();
43 _logger = ReferenceManager.getInstance().getLogger();
44
45 _logger.write(toString(), Logger.SYSINIT, "coming up");
46
47 // configuration variables we require
48 int queueMonitorInterval = 0;
49
50 Configuration config = _refman.getCM().getConfiguration("LocalClient");
51 if (config == null) {
52 throw new ComponentStartException("Unable to obtain configuration for component");
53 }
54 else {
55 try {
56 // get the configuration properties we need
57 queueMonitorInterval = Integer.parseInt(config.getProperty("Queue.MonitorInterval"));
58 } catch (org.omg.CORBA.MARSHAL e) {
59 throw new ComponentStartException("Unable to obtain requried configuration property for component");
60 }
61 }
62
63 _logger.write(toString(), Logger.SYSINIT, "configured");
64
65 // setup the queues, this must be done before both managers are setup
66 String queueName;
67 // setup a Queue for the servant -> monitor manager
68 _monitorQueue = new Queue();
69
70 // setup a Queue for the monitors -> alert manager
71 _alerterQueue = new Queue();
72
73
74
75 // setup the servant and connect
76 _logger.write(toString(), Logger.SYSINIT, "starting servant and connecting");
77 try {
78 ClientServant ref = new ClientServant(_monitorQueue);
79 org.omg.CORBA.Object objRef = _refman.getRootPOA().servant_to_reference(ref);
80 Client client = ClientHelper.narrow(objRef);
81
82 // this name maybe shouldn't be static
83 objRef = _refman.getCORBARef("iscream.ClientInterface.CorbaListener");
84 CorbaClientListener listener = CorbaClientListenerHelper.narrow(objRef);
85
86 _logger.write(toString(), Logger.SYSINIT, "connecting");
87 CorbaControlHandler handler = listener.connect(client, NAME);
88 handler.startData();
89 }
90 catch(Exception e) {
91 // not sure what to do here
92 // so we just log the error
93 _logger.write(toString(), Logger.ERROR, "ERROR - " + e.getMessage());
94 }
95
96 // setup the MonitorManager
97 MonitorManager monMan = MonitorManager.getInstance();
98 monMan.start();
99
100 // setup the AlerterManager
101 AlerterManager alertMan = AlerterManager.getInstance();
102 alertMan.start();
103
104 _logger.write(toString(), Logger.SYSINIT, "started");
105
106 }
107
108 /**
109 * Does a dependency check. Used mainly at startup to
110 * see if the required dependencies (components) are up
111 * and running.
112 *
113 * @return a boolean value, true if the depdencies are satisfied
114 */
115 public boolean depCheck() {
116 try {
117 org.omg.CORBA.Object obj;
118 // first check the ConfigurationManager is alive
119 obj = _refman.getCORBARef("iscream.ConfigurationManager");
120 // then get some info on the CLI
121 ConfigurationProxy cp = ConfigurationProxy.getInstance();
122 String cli = cp.getProperty("RootFilter", "RootFilter.realtimeInterfaceName");
123 // finally check the CLI is alive
124 obj = _refman.getCORBARef("iscream.ClientInterface." + cli);
125 } catch(ComponentCORBAException e) {
126 _logger.write(toString(), Logger.WARNING, "Dependency Failure: "+e);
127 return false;
128 } catch(PropertyNotFoundException e) {
129 _logger.write(toString(), Logger.WARNING, "Unable to obtain configuration: "+e);
130 return false;
131 }
132 // dependency check suceeded
133 return true;
134 }
135
136 /**
137 * Overrides the {@link java.lang.Object#toString() Object.toString()}
138 * method to provide clean logging (every class should have this).
139 *
140 * This uses the uk.ac.ukc.iscream.util.FormatName class
141 * to format the toString()
142 *
143 * @return the name of this class and its CVS revision
144 */
145 public String toString() {
146 return FormatName.getName(
147 NAME,
148 getClass().getName(),
149 REVISION);
150 }
151
152 //---PRIVATE METHODS---
153
154 //---ACCESSOR/MUTATOR METHODS---
155
156 //---ATTRIBUTES---
157
158 /**
159 * This holds a reference to the
160 * system logger that is being used.
161 */
162 private Logger _logger;
163
164 /**
165 * A reference to the reference manager in use
166 */
167 private ReferenceManager _refman;
168
169 //---STATIC ATTRIBUTES---
170
171 /**
172 * A queue for the alerter manager
173 */
174 public static Queue _alerterQueue;
175
176 /**
177 * A queue for the monitor manager
178 */
179 public static Queue _monitorQueue;
180
181 }