You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/10/02 04:02:14 UTC

svn commit: r700987 - in /servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin: ./ internal/ internal/commands/

Author: gnodet
Date: Wed Oct  1 19:02:13 2008
New Revision: 700987

URL: http://svn.apache.org/viewvc?rev=700987&view=rev
Log:
SMX4KNL-97: dissociate the name and the location of ServiceMix Kernel instances managed by the admin shell

Modified:
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminService.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminServiceMBean.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/Instance.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceImpl.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceMBeanImpl.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/InstanceImpl.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/CreateCommand.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/ListCommand.java
    servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/StartCommand.java

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminService.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminService.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminService.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminService.java Wed Oct  1 19:02:13 2008
@@ -18,7 +18,7 @@
 
 public interface AdminService {
 
-    Instance createInstance(String name, int port) throws Exception;
+    Instance createInstance(String name, int port, String location) throws Exception;
 
     Instance[] getInstances();
 

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminServiceMBean.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminServiceMBean.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminServiceMBean.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/AdminServiceMBean.java Wed Oct  1 19:02:13 2008
@@ -18,7 +18,7 @@
 
 public interface AdminServiceMBean {
 
-    void createInstance(String name, int port) throws Exception;
+    void createInstance(String name, int port, String location) throws Exception;
 
     String[] getInstances();
 
@@ -28,7 +28,7 @@
 
     boolean isRunning(String name) throws Exception;
 
-    void start(String name) throws Exception;
+    void start(String name, String javaOpts) throws Exception;
 
     void stop(String name) throws Exception;
 

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/Instance.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/Instance.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/Instance.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/Instance.java Wed Oct  1 19:02:13 2008
@@ -20,13 +20,15 @@
 
     String getName();
 
+    String getLocation();
+
     int getPid();
 
     int getPort() throws Exception;
 
     void changePort(int port) throws Exception;
 
-    void start() throws Exception;
+    void start(String javaOpts) throws Exception;
 
     void stop() throws Exception;
 

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceImpl.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceImpl.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceImpl.java Wed Oct  1 19:02:13 2008
@@ -64,9 +64,10 @@
             Map<String, Instance> newInstances = new HashMap<String, Instance>();
             for (int i = 0; i < count; i++) {
                 String name = child.get("item." + i + ".name", null);
+                String loc = child.get("item." + i + ".loc", null);
                 int pid = child.getInt("item." + i + ".pid", 0);
                 if (name != null) {
-                    InstanceImpl instance = new InstanceImpl(this, name);
+                    InstanceImpl instance = new InstanceImpl(this, name, loc);
                     if (pid > 0) {
                         try {
                             instance.attach(pid);
@@ -83,11 +84,11 @@
         }
     }
 
-    public synchronized Instance createInstance(String name, int port) throws Exception {
+    public synchronized Instance createInstance(String name, int port, String location) throws Exception {
         if (instances.get(name) != null) {
             throw new IllegalArgumentException("Instance '" + name + "' already exists");
         }
-        File serviceMixBase = new File(name).getCanonicalFile();
+        File serviceMixBase = new File(location != null ? location : ("instances/" + name)).getCanonicalFile();
         int remoteShellPort = port;
         if (remoteShellPort <= 0) {
             try {
@@ -134,7 +135,7 @@
             copyFilteredResourceToDir(serviceMixBase, "bin/servicemix", props);
             chmod(new File(serviceMixBase, "bin/servicemix"), "a+x");
         }
-        Instance instance = new InstanceImpl(this, name);
+        Instance instance = new InstanceImpl(this, name, serviceMixBase.toString());
         instances.put(name, instance);
         saveState();
         return instance;
@@ -160,6 +161,7 @@
         child.putInt("count", data.length);
         for (int i = 0; i < data.length; i++) {
             child.put("item." + i + ".name", data[i].getName());
+            child.put("item." + i + ".loc", data[i].getLocation());
             child.putInt("item." + i + ".pid", data[i].getPid());
         }
         prefs.flush();

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceMBeanImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceMBeanImpl.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceMBeanImpl.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/AdminServiceMBeanImpl.java Wed Oct  1 19:02:13 2008
@@ -32,8 +32,8 @@
         this.adminService = adminService;
     }
 
-    public void createInstance(String name, int port) throws Exception {
-        adminService.createInstance(name, port);
+    public void createInstance(String name, int port, String location) throws Exception {
+        adminService.createInstance(name, port, location);
     }
 
     public String[] getInstances() {
@@ -57,8 +57,8 @@
         return getExistingInstance(name).isRunning();
     }
 
-    public void start(String name) throws Exception {
-        getExistingInstance(name).start();
+    public void start(String name, String javaOpts) throws Exception {
+        getExistingInstance(name).start(javaOpts);
     }
 
     public void stop(String name) throws Exception {

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/InstanceImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/InstanceImpl.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/InstanceImpl.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/InstanceImpl.java Wed Oct  1 19:02:13 2008
@@ -41,12 +41,14 @@
 
     private AdminServiceImpl service;
     private String name;
+    private String location;
     private Process process;
     //private PumpStreamHandler handler;
 
-    public InstanceImpl(AdminServiceImpl service, String name) {
+    public InstanceImpl(AdminServiceImpl service, String name, String location) {
         this.service = service;
         this.name = name;
+        this.location = location;
     }
 
     public void attach(int pid) throws IOException {
@@ -61,6 +63,10 @@
         return this.name;
     }
 
+    public String getLocation() {
+        return location;
+    }
+
     public int getPid() {
         checkProcess();
         return this.process != null ? this.process.getPid() : 0;
@@ -69,7 +75,7 @@
     public int getPort() throws Exception {
         InputStream is = null;
         try {
-            File f = new File(name, "etc/org.apache.servicemix.shell.cfg");
+            File f = new File(location, "etc/org.apache.servicemix.shell.cfg");
             is = new FileInputStream(f);
             Properties props = new Properties();
             props.load(is);
@@ -89,7 +95,7 @@
             throw new IllegalStateException("Instance not stopped");
         }
         Properties props = new Properties();
-        File f = new File(name, "etc/org.apache.servicemix.shell.cfg");
+        File f = new File(location, "etc/org.apache.servicemix.shell.cfg");
         InputStream is = new FileInputStream(f);
         try {
             props.load(is);
@@ -107,15 +113,18 @@
         }
     }
 
-    public synchronized void start() throws Exception {
+    public synchronized void start(String javaOpts) throws Exception {
         checkProcess();
         if (this.process != null) {
             throw new IllegalStateException("Instance already started");
         }
+        if (javaOpts == null) {
+            javaOpts = "-server -Xms128M -Xmx512M -Dcom.sun.management.jmxremote";
+        }
         String command = new File(System.getProperty("java.home"), "bin/java" + (ScriptUtils.isWindows() ? ".exe" : "")).getCanonicalPath()
-                + " -server -Xms128M -Xmx512M -Dcom.sun.management.jmxremote"
+                + " " + javaOpts
                 + " -Dservicemix.home=\"" + System.getProperty("servicemix.home") + "\""
-                + " -Dservicemix.base=\"" + new File(name).getCanonicalPath() + "\""
+                + " -Dservicemix.base=\"" + new File(location).getCanonicalPath() + "\""
                 + " -Dservicemix.startLocalConsole=false"
                 + " -Dservicemix.startRemoteShell=true"
                 + " -classpath "
@@ -124,7 +133,7 @@
                 + new File(System.getProperty("servicemix.home"), "lib/servicemix-jaas-boot.jar").getCanonicalPath()
                 + " org.apache.servicemix.kernel.main.Main";
         this.process = ProcessBuilderFactory.newInstance().newBuilder()
-                        .directory(new File(name))
+                        .directory(new File(location))
                         .command(command)
                         .start();
         this.service.saveState();
@@ -143,7 +152,7 @@
         if (this.process != null) {
             throw new IllegalStateException("Instance not stopped");
         }
-        deleteFile(new File(name));
+        deleteFile(new File(location));
         this.service.forget(name);
         this.service.saveState();
     }

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/CreateCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/CreateCommand.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/CreateCommand.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/CreateCommand.java Wed Oct  1 19:02:13 2008
@@ -31,11 +31,14 @@
     @Option(name = "-p", aliases = { "--port"}, description = "Port number for remote shell connection")
     private int port = 0;
 
-    @Argument(index=0, required=true, description="Where to create the new ServiceMix instance")
+    @Option(name = "-l", aliases = { "--location"}, description = "Location of the new instance on the file system")
+    private String location;
+
+    @Argument(index=0, required=true, description="Name of the new ServiceMix instance")
     private String instance = null;
 
     protected Object doExecute() throws Exception {
-        getAdminService().createInstance(instance, port);
+        getAdminService().createInstance(instance, port, location);
         return SUCCESS;
     }
 

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/ListCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/ListCommand.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/ListCommand.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/ListCommand.java Wed Oct  1 19:02:13 2008
@@ -17,6 +17,7 @@
 package org.apache.servicemix.kernel.gshell.admin.internal.commands;
 
 import org.apache.geronimo.gshell.command.annotation.CommandComponent;
+import org.apache.geronimo.gshell.clp.Option;
 import org.apache.servicemix.kernel.gshell.admin.Instance;
 
 /**
@@ -25,9 +26,16 @@
 @CommandComponent(id="admin:list", description="List existing ServiceMix instances")
 public class ListCommand extends AdminCommandSupport {
 
+    @Option(name = "-l", aliases = { "--location" }, description = "Display instances location")
+    boolean location;
+
     protected Object doExecute() throws Exception {
         Instance[] instances = getAdminService().getInstances();
-        io.out.println("  Port   State       Pid  Name");
+        if (location) {
+            io.out.println("  Port   State       Pid  Location");
+        } else {
+            io.out.println("  Port   State       Pid  Name");
+        }
         for (Instance instance : instances) {
             StringBuilder sb = new StringBuilder();
             sb.append('[');
@@ -45,7 +53,11 @@
             }
             sb.append(s);
             sb.append("] ");
-            sb.append(instance.getName());
+            if (location) {
+                sb.append(instance.getLocation());
+            } else {
+                sb.append(instance.getName());
+            }
             io.out.println(sb.toString());
         }
         return SUCCESS;

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/StartCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/StartCommand.java?rev=700987&r1=700986&r2=700987&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/StartCommand.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-admin/src/main/java/org/apache/servicemix/kernel/gshell/admin/internal/commands/StartCommand.java Wed Oct  1 19:02:13 2008
@@ -18,15 +18,19 @@
 
 import org.apache.geronimo.gshell.command.annotation.CommandComponent;
 import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.geronimo.gshell.clp.Option;
 
 @CommandComponent(id="admin:start", description="Start an instance")
 public class StartCommand extends AdminCommandSupport {
 
+    @Option(name = "-o", aliases = { "--java-opts"}, description = "Java options when launching the instance")
+    private String javaOpts;
+
     @Argument(index=0, required=true, description="The instance name")
     private String instance = null;
 
     protected Object doExecute() throws Exception {
-        getExistingInstance(instance).start();
+        getExistingInstance(instance).start(javaOpts);
         return SUCCESS;
     }
 }