ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/componentmanager/ComponentManager.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/componentmanager/ComponentManager.java (file contents):
Revision 1.12 by tdb, Sun Jan 28 05:49:18 2001 UTC vs.
Revision 1.18 by ajm, Fri Feb 23 16:38:03 2001 UTC

# Line 93 | Line 93 | public class ComponentManager {
93          String componentList = System.getProperty("uk.ac.ukc.iscream.ComponentList");
94          StringTokenizer st = new StringTokenizer(componentList, ";");
95          
96 +
97 +        ArrayList componentsToStart = new ArrayList();
98 +        
99          // this could be done using reflection
100          // but..well..we don't ;-p
101          while (st.hasMoreTokens()){
102              String componentName = st.nextToken();
103              Component component = null;
101            System.out.println(toString + ": starting component - " + componentName);
104              
105 +            
106              // ### This is where the list of supported components is checked! ###
107              if (componentName.equalsIgnoreCase("core")) {
108                  component = new uk.ac.ukc.iscream.core.Core();
# Line 118 | Line 121 | public class ComponentManager {
121              // ###  Add new component constructors in the above section! ###
122              
123              if (component != null) {
124 <                try {
124 >                componentsToStart.add(component);    
125 >            } else {
126 >                System.err.println(toString + ": WARNING unsupported component not started");
127 >            }
128 >        }
129 >        
130 >        boolean tryAgain = true;
131 >        Component component = null;
132 >        while(tryAgain) {
133 >            Iterator i = componentsToStart.iterator();
134 >            while(i.hasNext()) {
135 >                try {
136 >                    component = (Component) i.next();
137 >                    System.out.println(toString + ": starting component - " + component.toString());
138                      component.start();
139 +                    componentsToStart.remove(componentsToStart.indexOf(component));
140                  } catch (ComponentStartException e) {
141 <                    System.err.println(toString + ": ERROR starting component - " + componentName);
141 >                    System.err.println(toString + ": ERROR starting component - " + component.toString());
142                      System.err.println(toString + ": component reports - " + e.getMessage());
143                      System.exit(1);
144 +                } catch(ComponentCORBAException e2) {
145 +                    System.err.println(toString + ": WARNING Component reported CORBA communications failure");
146 +                    System.err.println(toString + ": This could be because it can't communicate with components it needs.");
147 +                    System.err.println(toString + ": component reports - " + e2.getMessage());
148                  }
149 +            }
150 +            if (componentsToStart.size() > 0) {
151 +                System.err.println(toString + ": WARNING One or more components failed to start correctly.");
152 +                System.err.println(toString + ": Will try again in 5 seconds");
153 +                try {    
154 +                    Thread.sleep(5000);
155 +                } catch (InterruptedException e) {
156 +                    // we're not bothered
157 +                }
158              } else {
159 <                System.err.println(toString + ": WARNING unsupported component not started");
159 >                tryAgain = false;
160              }
161          }
162 +                
163              System.out.println(toString + ": running");
164 <            
164 >
165              // block on the ORB...in time, management functionality can be placed here.
166          refman.getORB().run();
167      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines