User: oberg   
  Date: 00/10/27 02:50:13

  Modified:    src/main/org/jboss Main.java
  Log:
  New configuration logic. Conf's are now per directory
  
  Revision  Changes    Path
  1.19      +137 -142  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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Main.java 2000/10/24 00:11:05     1.18
  +++ Main.java 2000/10/27 09:50:13     1.19
  @@ -30,7 +30,7 @@
    *   @see <related>
    *   @author Rickard �berg ([EMAIL PROTECTED])
    *   @author <a href="mailto:[EMAIL PROTECTED]">Daniel O'Connor</a>.
  - *   @version $Revision: 1.18 $
  + *   @version $Revision: 1.19 $
    */
   public class Main
   {
  @@ -43,11 +43,16 @@
      public static void main(final String[] args)
         throws Exception
      {
  -      // Add shutdown hook
  -      final java.io.PrintStream out = System.err;
  -
  +      String cn = "default"; // Default configuration name is "default", i.e. all 
conf files are in "/conf/default"
  +      
  +      // Given conf name?
  +      if (args.length == 1)
  +         cn = args[0];
  +      
  +      final String confName = cn;   
  +      
         // Load system properties
  -      InputStream propertiesIn = 
Main.class.getClassLoader().getResourceAsStream("jboss.properties");
  +      InputStream propertiesIn = 
Main.class.getClassLoader().getResourceAsStream(confName+"/jboss.properties");
   
         if ( propertiesIn == null ) {
   
  @@ -57,15 +62,14 @@
         System.getProperties().load(propertiesIn);
   
         // Set security
  -
  -      String serverPolicy = 
Main.class.getClassLoader().getResource("server.policy").getFile();
  +      URL serverPolicy = 
Main.class.getClassLoader().getResource(confName+"/server.policy");
   
         if ( serverPolicy == null ) {
   
             throw new IOException("server.policy missing");
         }
   
  -      System.setProperty("java.security.policy", serverPolicy);
  +      System.setProperty("java.security.policy", serverPolicy.getFile());
   
         // Set security manager
         // Optional for better performance
  @@ -80,173 +84,164 @@
         {
            public Object run()
            {
  -            if (args.length > 0)
  -            {
  -              new Main(args);
  -            } else
  -            {
  -                new Main();
  -            }
  +            new Main(confName);
               return null;
            }
         });
      }
   
      // Constructors --------------------------------------------------
  -    public Main()
  -    {
  -       this(new String[] { "jboss" });
  -    }
  -
  -    public Main(String[] configurations)
  +    public Main(String confName)
       {
         try
         {
  +         System.out.println("Using configuration \""+confName+"\"");
  +      
            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);
  -             Iterator enum = beans.iterator();
  -             while (enum.hasNext())
  +         // Create MBeanServer
  +         final MBeanServer server = MBeanServerFactory.createMBeanServer();
  +   
  +         // Add configuration directory to MLet
  +         URL confDirectory = new 
File("../conf/"+confName).getCanonicalFile().toURL();
  +         
  +         // Create MLet
  +         MLet mlet = new MLet(new URL[] { confDirectory });
  +         server.registerMBean(mlet, new ObjectName(server.getDefaultDomain(), 
"service", "MLet"));
  +   
  +         // Set MLet as classloader for this app
  +         Thread.currentThread().setContextClassLoader(mlet);
  +         
  +         // Load configuration
  +          URL mletConf = mlet.getResource("jboss.conf");
  +          Set beans = (Set)mlet.getMBeansFromURL(mletConf);
  +          Iterator enum = beans.iterator();
  +          while (enum.hasNext())
  +          {
  +             Object obj = enum.next();
  +             if (obj instanceof RuntimeOperationsException)
  +                
((RuntimeOperationsException)obj).getTargetException().printStackTrace(err);
  +             else if (obj instanceof RuntimeErrorException)
  +                ((RuntimeErrorException)obj).getTargetError().printStackTrace(err);
  +             else if (obj instanceof MBeanException)
  +                ((MBeanException)obj).getTargetException().printStackTrace(err);
  +             else if (obj instanceof RuntimeMBeanException)
  +                
((RuntimeMBeanException)obj).getTargetException().printStackTrace(err);
  +             else if (obj instanceof Throwable)
  +                 ((Throwable)obj).printStackTrace(err);
  +          }
  +
  +       // Load settings from XML
  +       InputStream conf = mlet.getResourceAsStream("jboss.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 = mlet.getResource("jboss.jcml");
  +         PrintWriter out = new PrintWriter(new FileWriter(confUrl.getFile()));
  +         out.println(cfg);
  +         out.close();
  +
  +         // Start MBeans
  +         InputStream depFile = mlet.getResourceAsStream("jboss.dependencies");
  +         byte[] depBytes = new byte[depFile.available()];
  +         depFile.read(depBytes);
  +         String depXML = new String(depBytes);
  +         final DependencyManager manager = new DependencyManager();
  +         manager.loadXML(depXML);
  +         manager.startMBeans(server);
  +
  +          // Add shutdown hook
  +          try
  +          {
  +             Runtime.getRuntime().addShutdownHook(new Thread()
                {
  -                Object obj = enum.next();
  -                if (obj instanceof RuntimeOperationsException)
  -                   
((RuntimeOperationsException)obj).getTargetException().printStackTrace(err);
  -                else if (obj instanceof RuntimeErrorException)
  -                   
((RuntimeErrorException)obj).getTargetError().printStackTrace(err);
  -                else if (obj instanceof MBeanException)
  -                   ((MBeanException)obj).getTargetException().printStackTrace(err);
  -                else if (obj instanceof RuntimeMBeanException)
  -                   
((RuntimeMBeanException)obj).getTargetException().printStackTrace(err);
  -                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
  -            InputStream depFile = 
getClass().getClassLoader().getResourceAsStream("jboss.dependencies");
  -            byte[] depBytes = new byte[depFile.available()];
  -            depFile.read(depBytes);
  -            String depXML = new String(depBytes);
  -            final DependencyManager manager = new DependencyManager();
  -            manager.loadXML(depXML);
  -            manager.startMBeans(server);
  -
  -             // Add shutdown hook
  -             try
  -             {
  -                Runtime.getRuntime().addShutdownHook(new Thread()
  +                public void run()
                   {
  -                   public void run()
  -                   {
  -                       manager.stopMBeans(server);
  +                    manager.stopMBeans(server);
   /*
  -                      err.println("Shutdown");
  -                      Set mBeans = server.queryNames(null, null);
  -                      Iterator names = mBeans.iterator();
  -                      err.println("Shutting down "+mBeans.size() +" MBeans");
  -                      while (names.hasNext())
  -                      {
  -                         ObjectName name = (ObjectName)names.next();
  -                         try
  -                         {
  -                            server.invoke(name, "destroy", new Object[0], new 
String[0]);
  -                         } catch (Throwable e)
  -                         {
  -//                           err.println(e);
  -                         }
  -                      }
  -                      err.println("Shutting done");
  -*/
  -                   }
  -                });
  -                System.out.println ("Shutdown hook added");
  -             } catch (Throwable e)
  -             {
  -                System.out.println("Could not add shutdown hook");
  -                // 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"))
  -                {
  +                   err.println("Shutdown");
                      Set mBeans = server.queryNames(null, null);
                      Iterator names = mBeans.iterator();
  +                   err.println("Shutting down "+mBeans.size() +" MBeans");
                      while (names.hasNext())
                      {
                         ObjectName name = (ObjectName)names.next();
                         try
                         {
  -                         server.invoke(name, "stop", new Object[0], new String[0]);
  +                         server.invoke(name, "destroy", new Object[0], new 
String[0]);
                         } catch (Throwable e)
                         {
  -                         // Ignore
  +//                           err.println(e);
                         }
                      }
  +                   err.println("Shutting done");
  +*/
  +                }
  +             });
  +             System.out.println ("Shutdown hook added");
  +          } catch (Throwable e)
  +          {
  +             System.out.println("Could not add shutdown hook");
  +             // 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();
   
  -                   System.exit(0);
  -                } else
  +             if (line.equals("shutdown"))
  +             {
  +                Set mBeans = server.queryNames(null, null);
  +                Iterator names = mBeans.iterator();
  +                while (names.hasNext())
                   {
  -                   Set mBeans = server.queryNames(null, null);
  -                   Iterator names = mBeans.iterator();
  -                   while (names.hasNext())
  +                   ObjectName name = (ObjectName)names.next();
  +                   try
                      {
  -                      ObjectName name = (ObjectName)names.next();
  -                      try
  -                      {
  -                         server.invoke(name, line, new Object[0], new String[0]);
  -                      } catch (Throwable e)
  -                      {
  -                         // Ignore
  -                      }
  +                      server.invoke(name, "stop", new Object[0], new String[0]);
  +                   } catch (Throwable e)
  +                   {
  +                      // Ignore
                      }
                   }
  +
  +                System.exit(0);
  +             } else
  +             {
  +                Set mBeans = server.queryNames(null, null);
  +                Iterator names = mBeans.iterator();
  +                while (names.hasNext())
  +                {
  +                   ObjectName name = (ObjectName)names.next();
  +                   try
  +                   {
  +                      server.invoke(name, line, new Object[0], new String[0]);
  +                   } catch (Throwable e)
  +                   {
  +                      // Ignore
  +                   }
  +                }
                }
  -    */
  -         }
  +          }
  + */
         } catch (RuntimeOperationsException e)
         {
            System.out.println("Runtime error");
  
  
  

Reply via email to