User: mulder
Date: 00/09/12 19:06:01
Modified: src/main/org/jboss Main.java
Log:
Add handling of MBean dependencies to startup sequence.
Revision Changes Path
1.12 +44 -49 jboss/src/main/org/jboss/Main.java
Index: Main.java
===================================================================
RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/Main.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Main.java 2000/09/10 06:57:05 1.11
+++ Main.java 2000/09/13 02:06:01 1.12
@@ -22,48 +22,49 @@
import javax.management.*;
import javax.management.loading.*;
+import org.jboss.dependencies.DependencyManager;
import org.jboss.system.SecurityAssociation;
/**
- *
+ *
* @see <related>
* @author Rickard �berg ([EMAIL PROTECTED])
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel O'Connor</a>.
- * @version $Revision: 1.11 $
+ * @version $Revision: 1.12 $
*/
public class Main
{
// Constants -----------------------------------------------------
-
+
String versionIdentifier = "BETA-PROD-01";
// Attributes ----------------------------------------------------
-
+
// Static --------------------------------------------------------
public static void main(final String[] args)
throws Exception
{
// Add shutdown hook
final java.io.PrintStream out = System.err;
-
+
// Load system properties
InputStream propertiesIn =
Main.class.getClassLoader().getResourceAsStream("jboss.properties");
-
+
if ( propertiesIn == null ) {
-
+
throw new IOException("jboss.properties missing");
}
-
+
System.getProperties().load(propertiesIn);
-
+
// Set security
-
+
String serverPolicy =
Main.class.getClassLoader().getResource("server.policy").getFile();
-
+
if ( serverPolicy == null ) {
-
+
throw new IOException("server.policy missing");
}
-
+
System.setProperty("java.security.policy", serverPolicy);
System.setSecurityManager(new SecurityManager());
@@ -92,27 +93,27 @@
{
this(new String[] { "jboss" });
}
-
+
public Main(String[] configurations)
{
try
{
final PrintStream err = System.err;
-
+
com.sun.management.jmx.Trace.parseTraceProperties();
-
+
// Load all configurations - one MBeanServer for each configuration
for (int i = 0; i < configurations.length; i++)
{
final MBeanServer server = MBeanServerFactory.createMBeanServer();
-
+
// Create MLet
MLet mlet = new MLet();
server.registerMBean(mlet, new ObjectName(server.getDefaultDomain(),
"service", "MLet"));
-
+
// Set MLet as classloader for this app
Thread.currentThread().setContextClassLoader(mlet);
-
+
// Read configuration
URL mletConf =
getClass().getClassLoader().getResource(configurations[i]+".conf");
Set beans = (Set)mlet.getMBeansFromURL(mletConf);
@@ -131,41 +132,35 @@
else if (obj instanceof Throwable)
((Throwable)obj).printStackTrace(err);
}
-
+
// Load settings from XML
InputStream conf =
getClass().getClassLoader().getResourceAsStream(configurations[i]+".jcml");
byte[] arr = new byte[conf.available()];
conf.read(arr);
String cfg = new String(arr);
-
+
// Invoke configuration loader
server.invoke(new ObjectName(":service=Configuration"), "load", new
Object[] { cfg }, new String[] { "java.lang.String" });
-
+
// Get configuration from service
cfg = (String)server.invoke(new ObjectName(":service=Configuration"),
"save", new Object[0] , new String[0]);
-
+
// Store config
// This way, the config will always contain a complete mirror of what's
in the server
- URL confUrl =
getClass().getClassLoader().getResource(configurations[i]+".jcml");
- PrintWriter out = new PrintWriter(new FileWriter(confUrl.getFile()));
- out.println(cfg);
- out.close();
-
- // Start MBeans
-// Iterator mbeans = server.queryNames(null,
null).iterator();
- Iterator mbeans = beans.iterator();
- while (mbeans.hasNext())
- {
- ObjectName name = ((ObjectInstance)mbeans.next()).getObjectName();
- try
- {
- server.invoke(name, "start", new Object[0], new String[0]);
- } catch (Exception e)
- {
- // Ignore
- }
- }
-
+ URL confUrl =
getClass().getClassLoader().getResource(configurations[i]+".jcml");
+ PrintWriter out = new PrintWriter(new FileWriter(confUrl.getFile()));
+ out.println(cfg);
+ out.close();
+
+ // Start MBeans
+ InputStream depFile =
getClass().getClassLoader().getResourceAsStream("jboss.dependencies");
+ byte[] depBytes = new byte[depFile.available()];
+ depFile.read(depBytes);
+ String depXML = new String(depBytes);
+ DependencyManager mgr = new DependencyManager();
+ mgr.loadXML(depXML);
+ mgr.startMBeans(server);
+
// Add shutdown hook
try
{
@@ -198,17 +193,17 @@
// JDK 1.2.. ignore!
}
- /*
+ /*
// Command tool
// Should be replaced with a MBean?
-
+
BufferedReader reader = new BufferedReader(new
InputStreamReader(System.in));
String line;
while (true)
{
// Get command
line = reader.readLine();
-
+
if (line.equals("shutdown"))
{
Set mBeans = server.queryNames(null, null);
@@ -224,7 +219,7 @@
// Ignore
}
}
-
+
System.exit(0);
} else
{
@@ -243,7 +238,7 @@
}
}
}
- */
+ */
}
} catch (RuntimeOperationsException e)
{
@@ -259,7 +254,7 @@
{
e.printStackTrace();
}
-
+
// Done
System.out.println("jBoss 2.0 "+versionIdentifier+" Started");
}