[jboss-cvs] JBossAS SVN: r101747 - trunk/main/src/main/java/org/jboss.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 2 19:18:41 EST 2010


Author: david.lloyd at jboss.com
Date: 2010-03-02 19:18:40 -0500 (Tue, 02 Mar 2010)
New Revision: 101747

Modified:
   trunk/main/src/main/java/org/jboss/Main.java
Log:
JBAS-7779: Auto-detect node name based on the server host name; also provide some options to override host and node name

Modified: trunk/main/src/main/java/org/jboss/Main.java
===================================================================
--- trunk/main/src/main/java/org/jboss/Main.java	2010-03-03 00:10:44 UTC (rev 101746)
+++ trunk/main/src/main/java/org/jboss/Main.java	2010-03-03 00:18:40 UTC (rev 101747)
@@ -181,9 +181,59 @@
       // First process the command line to pickup custom props/settings
       processCommandLine(args);
 
+      // Set up the host name before the logmanager config, so it can be referenced there
+      String hostName = System.getProperty("jboss.host.name");
+      String qualifiedHostName = System.getProperty("jboss.qualified.host.name");
+      if (qualifiedHostName == null)
+      {
+         // if host name is specified, don't pick a qualified host name that isn't related to it
+         qualifiedHostName = hostName;
+         if (qualifiedHostName == null)
+         {
+            // POSIX-like OSes including Mac should have this set
+            qualifiedHostName = System.getenv("HOSTNAME");
+         }
+         if (qualifiedHostName == null)
+         {
+            // Certain versions of Windows
+            qualifiedHostName = System.getenv("COMPUTERNAME");
+         }
+         if (qualifiedHostName == null)
+         {
+            qualifiedHostName = InetAddress.getLocalHost().getHostName();
+         }
+         if (qualifiedHostName.matches("^\\d+\\.\\d+\\.\\d+\\.\\d+$|:"))
+         {
+            // IP address is not acceptable
+            qualifiedHostName = null;
+         }
+         if (qualifiedHostName == null)
+         {
+            // Give up
+            qualifiedHostName = "unknown-host.unknown-domain";
+         }
+         qualifiedHostName = qualifiedHostName.trim().toLowerCase();
+         System.setProperty("jboss.qualified.host.name", qualifiedHostName);
+      }
+      if (hostName == null)
+      {
+         // Use the host part of the qualified host name
+         final int idx = qualifiedHostName.indexOf('.');
+         hostName = idx == -1 ? qualifiedHostName : qualifiedHostName.substring(0, idx);
+         System.setProperty("jboss.host.name", hostName);
+      }
+
+      // Set up the node name
+      String nodeName = System.getProperty("jboss.node.name");
+      if (nodeName == null)
+      {
+         nodeName = hostName;
+         System.setProperty("jboss.node.name", nodeName);
+      }
+
       // Initialize the JDK logmanager
-      String name = System.getProperty("java.util.logging.manager");
-      if (name == null)
+      String logManagerClassName = System.getProperty("java.util.logging.manager");
+      if (logManagerClassName == null)
       {
          System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
          String pluginClass = System.getProperty("org.jboss.logging.Logger.pluginClass");
@@ -455,9 +505,10 @@
    {
       // set this from a system property or default to jboss
       String programName = System.getProperty("program.name", "jboss");
-      String sopts = "-:hD:d:p:n:c:Vj::B:L:C:P:b:g:u:m:l:";
+      String sopts = "-:hD:d:p:n:c:Vj::B:L:C:P:b:g:u:m:l:H:N:";
       LongOpt[] lopts =
-      {new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h'),
+      {
+            new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h'),
             new LongOpt("bootdir", LongOpt.REQUIRED_ARGUMENT, null, 'd'),
             new LongOpt("patchdir", LongOpt.REQUIRED_ARGUMENT, null, 'p'),
             new LongOpt("netboot", LongOpt.REQUIRED_ARGUMENT, null, 'n'),
@@ -472,7 +523,10 @@
             new LongOpt("partition", LongOpt.REQUIRED_ARGUMENT, null, 'g'),
             new LongOpt("udp", LongOpt.REQUIRED_ARGUMENT, null, 'u'),
             new LongOpt("mcast_port", LongOpt.REQUIRED_ARGUMENT, null, 'm'),
-            new LongOpt("log", LongOpt.REQUIRED_ARGUMENT, null, 'l'),};
+            new LongOpt("log", LongOpt.REQUIRED_ARGUMENT, null, 'l'),
+            new LongOpt("hostname", LongOpt.REQUIRED_ARGUMENT, null, 'H'),
+            new LongOpt("nodename", LongOpt.REQUIRED_ARGUMENT, null, 'N'),
+      };
 
       Getopt getopt = new Getopt(programName, args, sopts, lopts);
       int code;
@@ -516,6 +570,8 @@
                System.out.println("    -m, --mcast_port=<ip>         UDP multicast port; only used by JGroups");
                System.out.println("    -u, --udp=<ip>                UDP multicast address");
                System.out.println("    -l, --log=<log4j|jdk>         Specify the logger plugin type");
+               System.out.println("    -H, --hostname=<name>         Set the host name");
+               System.out.println("    -N, --nodename=<name>         Set the node name to use");
                System.out.println();
                System.exit(0);
                break; // for completeness
@@ -681,6 +737,18 @@
                break;
             }
 
+            case 'H' : {
+               arg = getopt.getOptarg();
+               System.setProperty("jboss.qualified.host.name", arg.trim().toLowerCase());
+               break;
+            }
+
+            case 'N' : {
+               arg = getopt.getOptarg();
+               System.setProperty("jboss.node.name", arg.trim());
+               break;
+            }
+
             default :
                // this should not happen,
                // if it does throw an error so we know about it




More information about the jboss-cvs-commits mailing list