You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ac...@apache.org on 2007/01/11 10:49:09 UTC

svn commit: r495172 - in /incubator/activemq/trunk: activemq-console/src/main/java/org/apache/activemq/console/ activemq-console/src/main/java/org/apache/activemq/console/command/ assembly/src/main/descriptors/ assembly/src/release/bin/

Author: aco
Date: Thu Jan 11 01:49:08 2007
New Revision: 495172

URL: http://svn.apache.org/viewvc?view=rev&rev=495172
Log:
AMQ-1096: Added a activemq.classpath system property to provide extensions to the ActiveMQ classpath. Extensions can now be added via 'set ACTIVEMQ_CLASSPATH=c:/foo'
AMQ-1046: Consolidated all admin scripts to a single activemq-admin script file. To run admin scripts, use: activemq-admin bstat, activemq-admin query, activemq-admin stop, etc.

Added:
    incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java   (with props)
    incubator/activemq/trunk/assembly/src/release/bin/activemq-admin
    incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat   (with props)
Removed:
    incubator/activemq/trunk/assembly/src/release/bin/browse
    incubator/activemq/trunk/assembly/src/release/bin/browse.bat
    incubator/activemq/trunk/assembly/src/release/bin/bstat
    incubator/activemq/trunk/assembly/src/release/bin/bstat.bat
    incubator/activemq/trunk/assembly/src/release/bin/lcp.bat
    incubator/activemq/trunk/assembly/src/release/bin/list
    incubator/activemq/trunk/assembly/src/release/bin/list.bat
    incubator/activemq/trunk/assembly/src/release/bin/query
    incubator/activemq/trunk/assembly/src/release/bin/query.bat
    incubator/activemq/trunk/assembly/src/release/bin/shutdown
    incubator/activemq/trunk/assembly/src/release/bin/shutdown.bat
Modified:
    incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/Main.java
    incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/ShellCommand.java
    incubator/activemq/trunk/assembly/src/main/descriptors/unix-bin.xml
    incubator/activemq/trunk/assembly/src/release/bin/activemq
    incubator/activemq/trunk/assembly/src/release/bin/activemq.bat

Modified: incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/Main.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/Main.java?view=diff&rev=495172&r1=495171&r2=495172
==============================================================================
--- incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/Main.java (original)
+++ incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/Main.java Thu Jan 11 01:49:08 2007
@@ -33,6 +33,9 @@
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.StringTokenizer;
 
 /**
  * Main class that can bootstrap an ActiveMQ broker console. Handles command line
@@ -45,10 +48,10 @@
     public static final String TASK_DEFAULT_CLASS  = "org.apache.activemq.console.command.ShellCommand";
 
     private File          activeMQHome;
-	private File          activeMQBase;
+    private File          activeMQBase;
     private ClassLoader   classLoader;
-    private List          classpaths = new ArrayList(5);
-    private List          extensions = new ArrayList(5);
+    private Set           extensions = new HashSet(5);
+    private Set           activeMQClassPath = new HashSet(5);
 
 
     private static boolean useDefExt = true;
@@ -62,80 +65,81 @@
         app.parseExtensions(tokens);
 
         // Add the following to the classpath:
-        // 
+        //
         // ${activemq.base}/conf
         // ${activemq.base}/lib/* (only if activemq.base != activemq.home)
-        // ${activemq.home}/lib/* 
+        // ${activemq.home}/lib/*
         // ${activemq.base}/lib/optional/* (only if activemq.base != activemq.home)
-        // ${activemq.home}/lib/optional/* 
-        // 
+        // ${activemq.home}/lib/optional/*
+        //
         if(useDefExt && app.canUseExtdir()) {
 
-        	boolean baseIsHome = app.getActiveMQBase().equals(app.getActiveMQHome()); 
-        	
-            app.addClassPath(new File(app.getActiveMQBase(), "conf"));
-            
+            boolean baseIsHome = app.getActiveMQBase().equals(app.getActiveMQHome());
+
             if(!baseIsHome) {
                 app.addExtensionDirectory(new File(app.getActiveMQBase(), "lib"));
             }
             app.addExtensionDirectory(new File(app.getActiveMQHome(), "lib"));
-            
+
             if(!baseIsHome) {
                 app.addExtensionDirectory(new File(new File(app.getActiveMQBase(), "lib"), "optional"));
             }
             app.addExtensionDirectory(new File(new File(app.getActiveMQHome(), "lib"), "optional"));
-            
+
         }
 
+        // Add any custom classpath specified from the system property activemq.classpath
+        app.addClassPathList(System.getProperty("activemq.classpath"));
+
         try {
             app.runTaskClass(tokens);
         } catch (ClassNotFoundException e) {
             System.out.println("Could not load class: " + e.getMessage());
             try {
-				ClassLoader cl = app.getClassLoader();
-				if( cl!=null ) {
-		            System.out.println("Class loader setup: ");
-					printClassLoaderTree(cl);
-				}
-			} catch (MalformedURLException e1) {
-			}
+                ClassLoader cl = app.getClassLoader();
+                if( cl!=null ) {
+                    System.out.println("Class loader setup: ");
+                    printClassLoaderTree(cl);
+                }
+            } catch (MalformedURLException e1) {
+            }
         } catch (Throwable e) {
             System.out.println("Failed to execute main task. Reason: " + e);
         }
     }
 
     /**
-     * Print out what's in the classloader tree being used. 
-     * 
+     * Print out what's in the classloader tree being used.
+     *
      * @param cl
-     * @return
+     * @return depth
      */
-	private static int printClassLoaderTree(ClassLoader cl) {
-		int depth = 0;
-		if( cl.getParent()!=null ) {
-			depth = printClassLoaderTree(cl.getParent())+1;
-		}
-		
-		StringBuffer indent = new StringBuffer();
-		for (int i = 0; i < depth; i++) {
-			indent.append("  ");
-		}
-		
-		if( cl instanceof URLClassLoader ) {
-			URLClassLoader ucl = (URLClassLoader) cl;
-			System.out.println(indent+cl.getClass().getName()+" {");
-			URL[] urls = ucl.getURLs();
-			for (int i = 0; i < urls.length; i++) {
-				System.out.println(indent+"  "+urls[i]);
-			}
-			System.out.println(indent+"}");
-		} else {
-			System.out.println(indent+cl.getClass().getName());
-		}
-		return depth;
-	}
+    private static int printClassLoaderTree(ClassLoader cl) {
+        int depth = 0;
+        if( cl.getParent()!=null ) {
+            depth = printClassLoaderTree(cl.getParent())+1;
+        }
 
-	public void parseExtensions(List tokens) {
+        StringBuffer indent = new StringBuffer();
+        for (int i = 0; i < depth; i++) {
+            indent.append("  ");
+        }
+
+        if( cl instanceof URLClassLoader ) {
+            URLClassLoader ucl = (URLClassLoader) cl;
+            System.out.println(indent+cl.getClass().getName()+" {");
+            URL[] urls = ucl.getURLs();
+            for (int i = 0; i < urls.length; i++) {
+                System.out.println(indent+"  "+urls[i]);
+            }
+            System.out.println(indent+"}");
+        } else {
+            System.out.println(indent+cl.getClass().getName());
+        }
+        return depth;
+    }
+
+    public void parseExtensions(List tokens) {
         if (tokens.isEmpty()) {
             return;
         }
@@ -183,12 +187,12 @@
             } else {
                 i++;
             }
-		}
+        }
 
     }
 
     public void runTaskClass(List tokens) throws Throwable {
-    	
+
         System.out.println("ACTIVEMQ_HOME: "+ getActiveMQHome());
         System.out.println("ACTIVEMQ_BASE: "+ getActiveMQBase());
 
@@ -208,16 +212,25 @@
     public void addExtensionDirectory(File directory) {
         extensions.add(directory);
     }
-    
-    private void addClassPath(File file) {
-        classpaths.add(file);
-	}
+
+    public void addClassPathList(String fileList) {
+        if (fileList != null && fileList.length() > 0) {
+            StringTokenizer tokenizer = new StringTokenizer(fileList, ";");
+            while (tokenizer.hasMoreTokens()) {
+                addClassPath(new File(tokenizer.nextToken()));
+            }
+        }
+    }
+
+    public void addClassPath(File classpath) {
+        activeMQClassPath.add(classpath);
+    }
 
     /**
      * The extension directory feature will not work if the broker factory is already in the classpath
      * since we have to load him from a child ClassLoader we build for it to work correctly.
      *
-     * @return
+     * @return true, if extension dir can be used. false otherwise.
      */
     public boolean canUseExtdir() {
         try {
@@ -232,40 +245,40 @@
         if(classLoader==null) {
             // Setup the ClassLoader
             classLoader = Main.class.getClassLoader();
-            if (!extensions.isEmpty() || !classpaths.isEmpty()) {
+            if (!extensions.isEmpty() || !activeMQClassPath.isEmpty()) {
 
                 ArrayList urls = new ArrayList();
-                
-                for (Iterator iter = classpaths.iterator(); iter.hasNext();) {
+
+                for (Iterator iter = activeMQClassPath.iterator(); iter.hasNext();) {
                     File dir = (File) iter.next();
                     // try{ System.out.println("Adding to classpath: " + dir.getCanonicalPath()); }catch(Exception e){}
                     urls.add(dir.toURL());
                 }
-                
+
                 for (Iterator iter = extensions.iterator(); iter.hasNext();) {
                     File dir = (File) iter.next();
                     if( dir.isDirectory() ) {
-	                    File[] files = dir.listFiles();
-	                    if( files!=null ) {
-	                    	
-	                    	// Sort the jars so that classpath built is consistently
-	                    	// in the same order.  Also allows us to use jar names to control
-	                    	// classpath order.
-	                    	Arrays.sort(files, new Comparator(){
-								public int compare(Object o1, Object o2) {
-									File f1 = (File) o1;
-									File f2 = (File) o2;
-									return f1.getName().compareTo(f2.getName());
-								}
-							});
-	                    	
-	                        for (int j = 0; j < files.length; j++) {
-	                            if( files[j].getName().endsWith(".zip") || files[j].getName().endsWith(".jar") ) {
-	                                // try{ System.out.println("Adding to classpath: " + files[j].getCanonicalPath()); }catch(Exception e){}
-	                                urls.add(files[j].toURL());
-	                            }
-	                        }
-	                    }
+                        File[] files = dir.listFiles();
+                        if( files!=null ) {
+
+                            // Sort the jars so that classpath built is consistently
+                            // in the same order.  Also allows us to use jar names to control
+                            // classpath order.
+                            Arrays.sort(files, new Comparator(){
+                                public int compare(Object o1, Object o2) {
+                                    File f1 = (File) o1;
+                                    File f2 = (File) o2;
+                                    return f1.getName().compareTo(f2.getName());
+                                }
+                            });
+
+                            for (int j = 0; j < files.length; j++) {
+                                if( files[j].getName().endsWith(".zip") || files[j].getName().endsWith(".jar") ) {
+                                    // try{ System.out.println("Adding to classpath: " + files[j].getCanonicalPath()); }catch(Exception e){}
+                                    urls.add(files[j].toURL());
+                                }
+                            }
+                        }
                     }
                 }
 
@@ -308,23 +321,22 @@
                 System.setProperty("activemq.home",activeMQHome.getAbsolutePath());
             }
         }
-        
+
         return activeMQHome;
     }
-    
+
     public File getActiveMQBase() {
         if(activeMQBase==null) {
             if(System.getProperty("activemq.base") != null) {
-            	activeMQBase = new File(System.getProperty("activemq.base"));
+                activeMQBase = new File(System.getProperty("activemq.base"));
             }
-            
+
             if(activeMQBase==null){
                 activeMQBase = getActiveMQHome();
                 System.setProperty("activemq.base",activeMQBase.getAbsolutePath());
             }
         }
-        
+
         return activeMQBase;
     }
-
 }

Added: incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java?view=auto&rev=495172
==============================================================================
--- incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java (added)
+++ incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java Thu Jan 11 01:49:08 2007
@@ -0,0 +1,72 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.console.command;
+
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+public class BstatCommand extends QueryCommand {
+    /**
+     * Performs a predefiend query option
+     * @param tokens - command arguments
+     * @throws Exception
+     */
+    protected void runTask(List tokens) throws Exception {
+        List queryTokens = new ArrayList();
+        // Find the first non-option token
+        String brokerName = "*";
+        for (Iterator i = tokens.iterator(); i.hasNext();) {
+            String token = (String)i.next();
+            if (!token.startsWith("-")) {
+                brokerName = token;
+                break;
+            } else {
+                // Re-insert options
+                queryTokens.add(token);
+            }
+        }
+
+        // Build the predefined option
+        queryTokens.add("--objname");
+        queryTokens.add("Type=*,BrokerName=" + brokerName);
+        queryTokens.add("-xQTopic=ActiveMQ.Advisory.*");
+        queryTokens.add("--vuew");
+        queryTokens.add("Type,BrokerName,Destination,ConnectorName,EnqueueCount," +
+                        "DequeueCount,TotalEnqueueCount,TotalDequeueCount,Messages," +
+                        "TotalMessages,ConsumerCount,TotalConsumerCount,DispatchQueueSize");
+
+        // Call the query command
+        super.runTask(queryTokens);
+    }
+
+    protected String[] helpFile = new String[] {
+        "Task Usage: activemq-admin bstat [bstat-options] [broker-name]",
+        "Description: Performs a predefined query that displays useful statistics regarding the specified broker.",
+        "             If no broker name is specified, it will try and select from all registered brokers.",
+        "",
+        "Bstat Options:",
+        "    --jmxurl <url>                Set the JMX URL to connect to.",
+        "    --version                     Display the version information.",
+        "    -h,-?,--help                  Display the query broker help information.",
+        "",
+        "Examples:",
+        "    activemq-admin bstat localhost",
+        "        - Display a summary of statistics for the broker 'localhost'"
+    };
+}

Propchange: incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/BstatCommand.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/ShellCommand.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/ShellCommand.java?view=diff&rev=495172&r1=495171&r2=495172
==============================================================================
--- incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/ShellCommand.java (original)
+++ incubator/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/ShellCommand.java Thu Jan 11 01:49:08 2007
@@ -92,7 +92,7 @@
     }
 
     /**
-     * Parses for specific command task, default task is a start task.
+     * Parses for specific command task.
      * @param tokens - command arguments
      * @throws Exception
      */
@@ -109,6 +109,8 @@
                 new ListCommand().execute(tokens);
             } else if (taskToken.equals("query")) {
                 new QueryCommand().execute(tokens);
+            } else if (taskToken.equals("bstat")) {
+                new BstatCommand().execute(tokens);
             } else if (taskToken.equals("browse")) {
                 new AmqBrowseCommand().execute(tokens);
             } else if (taskToken.equals("purge")) {
@@ -116,12 +118,10 @@
             } else if (taskToken.equals("help")) {
                 printHelp();
             } else {
-                // If not valid task, push back to list
-                tokens.add(0, taskToken);
-                new StartCommand().execute(tokens);
+                printHelp();
             }
         } else {
-            new StartCommand().execute(tokens);
+            printHelp();
         }
         
     }

Modified: incubator/activemq/trunk/assembly/src/main/descriptors/unix-bin.xml
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/main/descriptors/unix-bin.xml?view=diff&rev=495172&r1=495171&r2=495172
==============================================================================
--- incubator/activemq/trunk/assembly/src/main/descriptors/unix-bin.xml (original)
+++ incubator/activemq/trunk/assembly/src/main/descriptors/unix-bin.xml Thu Jan 11 01:49:08 2007
@@ -75,11 +75,7 @@
       <outputDirectory></outputDirectory>
       <includes>
         <include>bin/activemq</include>
-        <include>bin/browse</include>
-        <include>bin/bstat</include>
-        <include>bin/list</include>
-        <include>bin/query</include>
-        <include>bin/shutdown</include>
+        <include>bin/activemq-admin</include>
         <include>bin/macosx/activemq</include>
         <include>bin/linux/activemq</include>
       </includes>

Modified: incubator/activemq/trunk/assembly/src/release/bin/activemq
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/release/bin/activemq?view=diff&rev=495172&r1=495171&r2=495172
==============================================================================
--- incubator/activemq/trunk/assembly/src/release/bin/activemq (original)
+++ incubator/activemq/trunk/assembly/src/release/bin/activemq Thu Jan 11 01:49:08 2007
@@ -120,6 +120,7 @@
 if $cygwin; then
   ACTIVEMQ_HOME=`cygpath --windows "$ACTIVEMQ_HOME"`
   ACTIVEMQ_BASE=`cygpath --windows "$ACTIVEMQ_BASE"`
+  ACTIVEMQ_CLASSPATH=`cygpath --path --windows "$ACTIVEMQ_CLASSPATH"`
   JAVA_HOME=`cygpath --windows "$JAVA_HOME"`
   CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
   CYGHOME=`cygpath --windows "$HOME"`
@@ -139,17 +140,21 @@
 fi
 
 ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $SUNJMX $SSL_OPTS"
+
+# Set default classpath
+ACTIVEMQ_CLASSPATH="${ACTIVEMQ_HOME}/conf;"$ACTIVEMQ_CLASSPATH
+
 # Uncomment to enable YourKit profiling
 #ACTIVEMQ_DEBUG_OPTS="-Xrunyjpagent"
 
 # Uncomment to enable remote debugging
 #ACTIVEMQ_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
 
-#ACTIVEMQ_TASK="start"
+ACTIVEMQ_TASK="start"
 if [ -n "$CYGHOME" ]; then
-    exec "$JAVACMD" $ACTIVEMQ_DEBUG_OPTS $ACTIVEMQ_OPTS -classpath "${ACTIVEMQ_CLASSPATH}" -Dactivemq.home="${ACTIVEMQ_HOME}" -Dactivemq.base="${ACTIVEMQ_BASE}" -Dcygwin.user.home="$CYGHOME" -jar "${ACTIVEMQ_HOME}/bin/run.jar" $ACTIVEMQ_TASK $@
+    exec "$JAVACMD" $ACTIVEMQ_DEBUG_OPTS $ACTIVEMQ_OPTS -Dactivemq.classpath="${ACTIVEMQ_CLASSPATH}" -Dactivemq.home="${ACTIVEMQ_HOME}" -Dactivemq.base="${ACTIVEMQ_BASE}" -Dcygwin.user.home="$CYGHOME" -jar "${ACTIVEMQ_HOME}/bin/run.jar" $ACTIVEMQ_TASK $@
 else
-    exec "$JAVACMD" $ACTIVEMQ_DEBUG_OPTS $ACTIVEMQ_OPTS -classpath "${ACTIVEMQ_CLASSPATH}" -Dactivemq.home="${ACTIVEMQ_HOME}" -Dactivemq.base="${ACTIVEMQ_BASE}" -jar "${ACTIVEMQ_HOME}/bin/run.jar" $ACTIVEMQ_TASK $@
+    exec "$JAVACMD" $ACTIVEMQ_DEBUG_OPTS $ACTIVEMQ_OPTS -Dactivemq.classpath="${ACTIVEMQ_CLASSPATH}" -Dactivemq.home="${ACTIVEMQ_HOME}" -Dactivemq.base="${ACTIVEMQ_BASE}" -jar "${ACTIVEMQ_HOME}/bin/run.jar" $ACTIVEMQ_TASK $@
 fi
 
 

Added: incubator/activemq/trunk/assembly/src/release/bin/activemq-admin
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/release/bin/activemq-admin?view=auto&rev=495172
==============================================================================
--- incubator/activemq/trunk/assembly/src/release/bin/activemq-admin (added)
+++ incubator/activemq/trunk/assembly/src/release/bin/activemq-admin Thu Jan 11 01:49:08 2007
@@ -0,0 +1,149 @@
+#!/bin/sh
+
+# ------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ------------------------------------------------------------------------
+
+# load system-wide activemq configuration
+if [ -f "/etc/activemq.conf" ] ; then
+  . /etc/activemq.conf
+fi
+
+# provide default values for people who don't use RPMs
+if [ -z "$usejikes" ] ; then
+  usejikes=false;
+fi
+
+# load user activemq configuration
+if [ -f "$HOME/.activemqrc" ] ; then
+  . "$HOME/.activemqrc"
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  Darwin*) darwin=true
+           if [ -z "$JAVA_HOME" ] ; then
+             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
+           fi
+           ;;
+esac
+
+if [ -z "$ACTIVEMQ_HOME" ] ; then
+  # try to find ACTIVEMQ
+  if [ -d /opt/activemq ] ; then
+    ACTIVEMQ_HOME=/opt/activemq
+  fi
+
+  if [ -d "${HOME}/opt/activemq" ] ; then
+    ACTIVEMQ_HOME="${HOME}/opt/activemq"
+  fi
+
+  ## resolve links - $0 may be a link to activemq's home
+  PRG="$0"
+  progname=`basename "$0"`
+  saveddir=`pwd`
+
+  # need this for relative symlinks
+  dirname_prg=`dirname "$PRG"`
+  cd "$dirname_prg"
+
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '.*/.*' > /dev/null; then
+	PRG="$link"
+    else
+	PRG=`dirname "$PRG"`"/$link"
+    fi
+  done
+
+  ACTIVEMQ_HOME=`dirname "$PRG"`/..
+
+  cd "$saveddir"
+
+  # make it fully qualified
+  ACTIVEMQ_HOME=`cd "$ACTIVEMQ_HOME" && pwd`
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$ACTIVEMQ_HOME" ] &&
+    ACTIVEMQ_HOME=`cygpath --unix "$ACTIVEMQ_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD=`which java 2> /dev/null `
+    if [ -z "$JAVACMD" ] ; then
+        JAVACMD=java
+    fi
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly."
+  echo "  We cannot execute $JAVACMD"
+  exit 1
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  ACTIVEMQ_HOME=`cygpath --windows "$ACTIVEMQ_HOME"`
+  JAVA_HOME=`cygpath --windows "$JAVA_HOME"`
+  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  CYGHOME=`cygpath --windows "$HOME"`
+fi
+
+
+if [ -z "$ACTIVEMQ_OPTS" ] ; then
+  ACTIVEMQ_OPTS="-Xmx512M -Dderby.system.home=../data -Dderby.storage.fileSyncTransactionLog=true"
+fi
+
+# Uncomment to enable YourKit profiling
+#ACTIVEMQ_DEBUG_OPTS="-Xrunyjpagent"
+
+# Uncomment to enable remote debugging
+#ACTIVEMQ_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
+
+ACTIVEMQ_CMD_LINE_ARGS=$@
+if [ -z "$ACTIVEMQ_CMD_LINE_ARGS" ] ; then
+    ACTIVEMQ_CMD_LINE_ARGS="--help"
+fi 
+
+# Setup ActiveMQ classpath. Default is the conf directory.
+ACTIVEMQ_CLASSPATH="${ACTIVEMQ_HOME}/conf;"$ACTIVEMQ_CLASSPATH
+
+if [ -n "$CYGHOME" ]; then
+    exec "$JAVACMD" $ACTIVEMQ_DEBUG_OPTS $ACTIVEMQ_OPTS -Dactivemq.classpath="${ACTIVEMQ_CLASSPATH}" -Dactivemq.home="${ACTIVEMQ_HOME}" -Dcygwin.user.home="$CYGHOME" -jar "${ACTIVEMQ_HOME}/bin/run.jar" $ACTIVEMQ_CMD_LINE_ARGS
+else
+    exec "$JAVACMD" $ACTIVEMQ_DEBUG_OPTS $ACTIVEMQ_OPTS -Dactivemq.classpath="${ACTIVEMQ_CLASSPATH}" -Dactivemq.home="${ACTIVEMQ_HOME}" -jar "${ACTIVEMQ_HOME}/bin/run.jar" $ACTIVEMQ_CMD_LINE_ARGS
+fi
+
+

Added: incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat?view=auto&rev=495172
==============================================================================
--- incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat (added)
+++ incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat Thu Jan 11 01:49:08 2007
@@ -0,0 +1,120 @@
+@echo off
+
+REM ------------------------------------------------------------------------
+REM Licensed to the Apache Software Foundation (ASF) under one or more
+REM contributor license agreements.  See the NOTICE file distributed with
+REM this work for additional information regarding copyright ownership.
+REM The ASF licenses this file to You under the Apache License, Version 2.0
+REM (the "License"); you may not use this file except in compliance with
+REM the License.  You may obtain a copy of the License at
+REM
+REM http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing, software
+REM distributed under the License is distributed on an "AS IS" BASIS,
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM See the License for the specific language governing permissions and
+REM limitations under the License.
+REM ------------------------------------------------------------------------
+
+if exist "%HOME%\activemqrc_pre.bat" call "%HOME%\activemqrc_pre.bat"
+
+if "%OS%"=="Windows_NT" @setlocal
+
+rem %~dp0 is expanded pathname of the current script under NT
+set DEFAULT_ACTIVEMQ_HOME=%~dp0..
+
+if "%ACTIVEMQ_HOME%"=="" set ACTIVEMQ_HOME=%DEFAULT_ACTIVEMQ_HOME%
+set DEFAULT_ACTIVEMQ_HOME=
+
+rem Slurp the command line arguments. This loop allows for an unlimited number
+rem of arguments (up to the command line limit, anyway).
+
+set ACTIVEMQ_CMD_LINE_ARGS=%1
+if ""%1""=="""" goto doneStart
+shift
+:setupArgs
+if ""%1""=="""" goto doneStart
+set ACTIVEMQ_CMD_LINE_ARGS=%ACTIVEMQ_CMD_LINE_ARGS% %1
+shift
+goto setupArgs
+
+rem This label provides a place for the argument list loop to break out 
+rem and for NT handling to skip to.
+
+:doneStart
+rem find ACTIVEMQ_HOME if it does not exist due to either an invalid value passed
+rem by the user or the %0 problem on Windows 9x
+if exist "%ACTIVEMQ_HOME%\README.txt" goto checkJava
+
+rem check for activemq in Program Files on system drive
+if not exist "%SystemDrive%\Program Files\activemq" goto checkSystemDrive
+set ACTIVEMQ_HOME=%SystemDrive%\Program Files\activemq
+goto checkJava
+
+:checkSystemDrive
+rem check for activemq in root directory of system drive
+if not exist %SystemDrive%\activemq\README.txt goto checkCDrive
+set ACTIVEMQ_HOME=%SystemDrive%\activemq
+goto checkJava
+
+:checkCDrive
+rem check for activemq in C:\activemq for Win9X users
+if not exist C:\activemq\README.txt goto noAntHome
+set ACTIVEMQ_HOME=C:\activemq
+goto checkJava
+
+:noAntHome
+echo ACTIVEMQ_HOME is set incorrectly or activemq could not be located. Please set ACTIVEMQ_HOME.
+goto end
+
+:checkJava
+set _JAVACMD=%JAVACMD%
+
+set JAVA_EXT_DIRS=%JAVA_HOME%\lib\ext;%ACTIVEMQ_HOME%;%ACTIVEMQ_HOME%\lib;%ACTIVEMQ_HOME%\lib\optional
+
+if "%JAVA_HOME%" == "" goto noJavaHome
+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
+if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe
+goto runAnt
+
+:noJavaHome
+if "%_JAVACMD%" == "" set _JAVACMD=java.exe
+echo.
+echo Warning: JAVA_HOME environment variable is not set.
+echo.
+
+:runAnt
+if "%ACTIVEMQ_BASE%" == "" set ACTIVEMQ_BASE=%ACTIVEMQ_HOME%
+if "%ACTIVEMQ_OPTS%" == "" set ACTIVEMQ_OPTS=-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=true -Dderby.system.home="%ACTIVEMQ_BASE%\data" -Dderby.storage.fileSyncTransactionLog=true
+
+if "%SUNJMX%" == "" set SUNJMX=-Dcom.sun.management.jmxremote
+REM set SUNJMX=-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
+
+if "%SSL_OPTS%" == "" set SSL_OPTS=-Djavax.net.ssl.keyStorePassword=password -Djavax.net.ssl.trustStorePassword=password -Djavax.net.ssl.keyStore="%ACTIVEMQ_BASE%/conf/broker.ks" -Djavax.net.ssl.trustStore="%ACTIVEMQ_BASE%/conf/broker.ts"
+
+if "%ACTIVEMQ_CMD_LINE_ARGS%" == "" set ACTIVEMQ_CMD_LINE_ARGS=--help
+
+REM Uncomment to enable YourKit profiling
+REM SET ACTIVEMQ_DEBUG_OPTS="-Xrunyjpagent"
+
+REM Uncomment to enable remote debugging
+REM SET ACTIVEMQ_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
+
+REM Setup ActiveMQ Classpath. Default is the conf directory.
+set ACTIVEMQ_CLASSPATH=%ACTIVEMQ_HOME%/conf;%ACTIVEMQ_CLASSPATH%
+
+"%_JAVACMD%" %ACTIVEMQ_DEBUG_OPTS% %ACTIVEMQ_OPTS% -Djava.ext.dirs="%JAVA_EXT_DIRS%" -Dactivemq.classpath="%ACTIVEMQ_CLASSPATH%" -jar "%ACTIVEMQ_HOME%/bin/run.jar" %ACTIVEMQ_CMD_LINE_ARGS%
+
+goto end
+
+:end
+set _JAVACMD=
+set ACTIVEMQ_CMD_LINE_ARGS=
+
+if "%OS%"=="Windows_NT" @endlocal
+
+:mainEnd
+if exist "%HOME%\activemqrc_post.bat" call "%HOME%\activemqrc_post.bat"
+
+

Propchange: incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat
------------------------------------------------------------------------------
    svn:eol-style = CRLF

Propchange: incubator/activemq/trunk/assembly/src/release/bin/activemq-admin.bat
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/activemq/trunk/assembly/src/release/bin/activemq.bat
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/release/bin/activemq.bat?view=diff&rev=495172&r1=495171&r2=495172
==============================================================================
--- incubator/activemq/trunk/assembly/src/release/bin/activemq.bat (original)
+++ incubator/activemq/trunk/assembly/src/release/bin/activemq.bat Thu Jan 11 01:49:08 2007
@@ -99,8 +99,13 @@
 REM Uncomment to enable remote debugging
 REM SET ACTIVEMQ_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
 
+REM Setup ActiveMQ Classpath. Default is the conf directory.
+set ACTIVEMQ_CLASSPATH=%ACTIVEMQ_HOME%/conf;%ACTIVEMQ_CLASSPATH%
+
+REM Set the task to run
 set ACTIVEMQ_TASK="start"
-"%_JAVACMD%" %SUNJMX% %ACTIVEMQ_DEBUG_OPTS% %ACTIVEMQ_OPTS% %SSL_OPTS% -classpath "%ACTIVEMQ_CLASSPATH%" -Dactivemq.home="%ACTIVEMQ_HOME%" -Dactivemq.base="%ACTIVEMQ_BASE%" -jar "%ACTIVEMQ_HOME%/bin/run.jar" %ACTIVEMQ_TASK% %ACTIVEMQ_CMD_LINE_ARGS%
+
+"%_JAVACMD%" %SUNJMX% %ACTIVEMQ_DEBUG_OPTS% %ACTIVEMQ_OPTS% %SSL_OPTS% -Dactivemq.classpath="%ACTIVEMQ_CLASSPATH%" -Dactivemq.home="%ACTIVEMQ_HOME%" -Dactivemq.base="%ACTIVEMQ_BASE%" -jar "%ACTIVEMQ_HOME%/bin/run.jar" %ACTIVEMQ_TASK% %ACTIVEMQ_CMD_LINE_ARGS%
 
 goto end