You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2011/02/25 15:26:01 UTC

svn commit: r1074532 - in /karaf/branches/karaf-2.2.x: admin/command/src/main/java/org/apache/karaf/admin/command/ admin/command/src/main/resources/OSGI-INF/ admin/command/src/main/resources/OSGI-INF/blueprint/ admin/command/src/test/java/org/apache/ka...

Author: jbonofre
Date: Fri Feb 25 14:26:00 2011
New Revision: 1074532

URL: http://svn.apache.org/viewvc?rev=1074532&view=rev
Log:
[KARAF-476] Add change RMI server port support.

Added:
    karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java
Modified:
    karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java
    karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java
    karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
    karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/bundle.info
    karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java
    karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java
    karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
    karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java
    karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
    karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
    karaf/branches/karaf-2.2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg
    karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java
    karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java
    karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
    karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java
    karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
    karaf/branches/karaf-2.2.x/admin/management/src/main/resources/OSGI-INF/bundle.info
    karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java
    karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java
    karaf/branches/karaf-2.2.x/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java
    karaf/branches/karaf-2.2.x/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java

Added: karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java?rev=1074532&view=auto
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java (added)
+++ karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java Fri Feb 25 14:26:00 2011
@@ -0,0 +1,36 @@
+/*
+ * 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.karaf.admin.command;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+
+@Command(scope = "admin", name = "change-rmi-server-port", description = "Changes the RMI server port (used by management layer) of an existing container instance.")
+public class ChangeRmiServerPortCommand extends AdminCommandSupport {
+
+    @Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
+    private String instance = null;
+
+    @Argument(index = 1, name = "port", description = "The new RMI server port to set", required = true, multiValued = false)
+    private int port = 0;
+
+    public Object doExecute() throws Exception {
+        getExistingInstance(instance).changeRmiServerPort(port);
+        return null;
+    }
+
+}

Modified: karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java (original)
+++ karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java Fri Feb 25 14:26:00 2011
@@ -35,8 +35,11 @@ public class CreateCommand extends Admin
     @Option(name = "-s", aliases = {"--ssh-port"}, description = "Port number for remote secure shell connection", required = false, multiValued = false)
     int sshPort = 0;
 
-    @Option(name = "-r", aliases = {"--rmi-port", "--rmi-registry-port"}, description = "Port number for RMI registry connection", required = false, multiValued = false)
-    int rmiPort = 0;
+    @Option(name = "-r", aliases = {"-rr", "--rmi-port", "--rmi-registry-port"}, description = "Port number for RMI registry connection", required = false, multiValued = false)
+    int rmiRegistryPort = 0;
+
+    @Option(name = "-rs", aliases = {"--rmi-server-port"}, description = "Port number for RMI server connection", required = false, multiValued = false)
+    int rmiServerPort = 0;
 
     @Option(name = "-l", aliases = {"--location"}, description = "Location of the new container instance in the file system", required = false, multiValued = false)
     String location;
@@ -56,7 +59,7 @@ public class CreateCommand extends Admin
     String instance = null;
 
     protected Object doExecute() throws Exception {
-        InstanceSettings settings = new InstanceSettings(sshPort, rmiPort, location, javaOpts, featureURLs, features);
+        InstanceSettings settings = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features);
         getAdminService().createInstance(instance, settings);
         return null;
     }

Modified: karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java (original)
+++ karaf/branches/karaf-2.2.x/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java Fri Feb 25 14:26:00 2011
@@ -35,11 +35,11 @@ public class ListCommand extends AdminCo
     protected Object doExecute() throws Exception {
         Instance[] instances = getAdminService().getInstances();
         if (javaOpts) {
-            System.out.println("  SSH Port   RMI Port   State       Pid  JavaOpts");
+            System.out.println("  SSH Port   RMI Ports         State       Pid  JavaOpts");
         } else if (location) {
-            System.out.println("  SSH Port   RMI Port   State       Pid  Location");
+            System.out.println("  SSH Port   RMI Ports         State       Pid  Location");
         } else {
-            System.out.println("  SSH Port   RMI Port   State       Pid  Name");
+            System.out.println("  SSH Port   RMI Ports         State       Pid  Name");
         }
         for (Instance instance : instances) {
             StringBuilder sb = new StringBuilder();
@@ -50,11 +50,12 @@ public class ListCommand extends AdminCo
             }
             sb.append(s);
             sb.append("] [");
-            String r = Integer.toString(instance.getRmiRegistryPort());
-            for (int i = r.length(); i < 8; i++) {
+            String rmiRegistryPort = Integer.toString(instance.getRmiRegistryPort());
+            String rmiServerPort = Integer.toString(instance.getRmiServerPort());
+            sb.append(rmiRegistryPort).append("/").append(rmiServerPort);
+            for (int i = rmiRegistryPort.length() + rmiServerPort.length() + 1; i < 15; i++) {
                 sb.append(' ');
             }
-            sb.append(r);
             sb.append("] [");
             String state = instance.getState();
             while (state.length() < "starting".length()) {

Modified: karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml (original)
+++ karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml Fri Feb 25 14:26:00 2011
@@ -94,6 +94,15 @@
                 <null />
             </completers>
         </command>
+        <command name="admin/change-rmi-server-port">
+            <action class="org.apache.karaf.admin.command.ChangeRmiServerPortCommand">
+                <property name="adminService" ref="adminService" />
+            </action>
+            <completers>
+                <ref component-id="instanceCompleter" />
+                <null />
+            </completers>
+        </command>
         <command name="admin/change-opts">
             <action class="org.apache.karaf.admin.command.ChangeOptsCommand">
                 <property name="adminService" ref="adminService" />

Modified: karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/bundle.info
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/bundle.info?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/bundle.info (original)
+++ karaf/branches/karaf-2.2.x/admin/command/src/main/resources/OSGI-INF/bundle.info Fri Feb 25 14:26:00 2011
@@ -19,6 +19,7 @@
     \u001B[36madmin:rename\u001B[0m Renames an existing container instance.
     \u001B[36madmin:change-ssh-port\u001B[0m Changes the secure shell port of an existing container instance.
     \u001B[36madmin:change-rmi-registry-port\u001B[0m Changes the RMI registry port (used by management layer) of an existing container instance.
+    \u001B[36madmin:change-rmi-server-port\u001B[0m Changes the RMI server port (used by management layer) of an existing container instance.
     \u001B[36madmin:change-opts\u001B[0m Changes the java options of an existing container instance.
 
 \u001B[1mSEE ALSO\u001B[0m

Modified: karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java (original)
+++ karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java Fri Feb 25 14:26:00 2011
@@ -33,7 +33,8 @@ public class CreateCommandTest extends T
         CreateCommand cc = new CreateCommand();
         cc.setAdminService(adminService);
         cc.sshPort = 9941;
-        cc.rmiPort = 1122;
+        cc.rmiRegistryPort = 1122;
+        cc.rmiServerPort = 44444;
         cc.location = "top";
         cc.javaOpts = "foo";
         cc.features = Arrays.asList("abc", "def");
@@ -43,7 +44,7 @@ public class CreateCommandTest extends T
         EasyMock.verify(adminService); // check precondition
         EasyMock.reset(adminService);
         InstanceSettings expectedIS =
-            new InstanceSettings(9941, 1122, "top", "foo", Collections.singletonList("http://something"), Arrays.asList("abc", "def"));
+            new InstanceSettings(9941, 1122, 44444, "top", "foo", Collections.singletonList("http://something"), Arrays.asList("abc", "def"));
         EasyMock.expect(adminService.createInstance("myInstance", expectedIS)).andReturn(null);
         EasyMock.replay(adminService);
         

Modified: karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java (original)
+++ karaf/branches/karaf-2.2.x/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java Fri Feb 25 14:26:00 2011
@@ -121,7 +121,8 @@ public class ExecuteTest extends TestCas
         final File tempFile = createTempDir(getName());
         Properties p = new Properties();
         p.setProperty("ssh.port", "1302");
-        p.setProperty("rmi.port", "1122");
+        p.setProperty("rmi.registry.port", "1122");
+        p.setProperty("rmi.server.port", "44444");
         FileOutputStream fos = new FileOutputStream(new File(tempFile, AdminServiceImpl.STORAGE_FILE));
         p.store(fos, "");
         fos.close();
@@ -147,9 +148,12 @@ public class ExecuteTest extends TestCas
                     Field sshField = AdminServiceImpl.class.getDeclaredField("defaultSshPortStart");
                     sshField.setAccessible(true);
                     assertEquals(1302, sshField.get(admin));
-                    Field rmiField = AdminServiceImpl.class.getDeclaredField("defaultRmiPortStart");
-                    rmiField.setAccessible(true);
-                    assertEquals(1122, rmiField.get(admin));
+                    Field rmiRegistryField = AdminServiceImpl.class.getDeclaredField("defaultRmiRegistryPortStart");
+                    rmiRegistryField.setAccessible(true);
+                    assertEquals(1122, rmiRegistryField.get(admin));
+                    Field rmiServerField = AdminServiceImpl.class.getDeclaredField("defaultRmiServerPortStart");
+                    rmiServerField.setAccessible(true);
+                    assertEquals(44444, rmiServerField.get(admin));
                     return null;
                 }
             });

Modified: karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/Instance.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/Instance.java (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/Instance.java Fri Feb 25 14:26:00 2011
@@ -43,6 +43,10 @@ public interface Instance {
 
     void changeRmiRegistryPort(int port) throws Exception;
 
+    int getRmiServerPort();
+
+    void changeRmiServerPort(int port) throws Exception;
+
     String getJavaOpts();
 
     void changeJavaOpts(String javaOpts) throws Exception;

Modified: karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java Fri Feb 25 14:26:00 2011
@@ -21,14 +21,16 @@ import java.util.List;
 public class InstanceSettings {
     private final int sshPort;
     private final int rmiRegistryPort;
+    private final int rmiServerPort;
     private final String location;
     private final String javaOpts;
     private final List<String> featureURLs;
     private final List<String> features;
 
-    public InstanceSettings(int sshPort, int rmiRegistryPort, String location, String javaOpts, List<String> featureURLs, List<String> features) {
+    public InstanceSettings(int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, List<String> featureURLs, List<String> features) {
         this.sshPort = sshPort;
         this.rmiRegistryPort = rmiRegistryPort;
+        this.rmiServerPort = rmiServerPort;
         this.location = location;
         this.javaOpts = javaOpts;
         this.featureURLs = featureURLs;
@@ -43,6 +45,10 @@ public class InstanceSettings {
         return rmiRegistryPort;
     }
 
+    public int getRmiServerPort() {
+        return rmiServerPort;
+    }
+
     public String getLocation() {
         return location;
     }
@@ -70,6 +76,7 @@ public class InstanceSettings {
         InstanceSettings is = (InstanceSettings) o;
         return is.sshPort == sshPort &&
                is.rmiRegistryPort == rmiRegistryPort &&
+               is.rmiServerPort == rmiServerPort &&
                (location == null ? is.location == null : location.equals(is.location)) &&
                (javaOpts == null ? is.javaOpts == null : javaOpts.equals(is.javaOpts)) &&
                (featureURLs == null ? is.featureURLs == null : featureURLs.equals(is.featureURLs)) &&
@@ -78,7 +85,7 @@ public class InstanceSettings {
 
     @Override
     public int hashCode() {
-        int result = sshPort + rmiRegistryPort;
+        int result = sshPort + rmiRegistryPort + rmiServerPort;
         result = 31 * result + (location != null ? location.hashCode() : 0);
         result = 31 * result + (javaOpts != null ? javaOpts.hashCode() : 0);
         result = 31 * result + (featureURLs != null ? featureURLs.hashCode() : 0);

Modified: karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java Fri Feb 25 14:26:00 2011
@@ -47,7 +47,9 @@ public class AdminServiceImpl implements
 
     private int defaultSshPortStart = 8101;
 
-    private int defaultRmiPortStart = 1099;
+    private int defaultRmiRegistryPortStart = 1099;
+
+    private int defaultRmiServerPortStart = 44444;
 
     private File storageLocation;
 
@@ -107,7 +109,8 @@ public class AdminServiceImpl implements
             Properties storage = loadStorage(storageFile);
             int count = Integer.parseInt(storage.getProperty("count", "0"));
             defaultSshPortStart = Integer.parseInt(storage.getProperty("ssh.port", Integer.toString(defaultSshPortStart)));
-            defaultRmiPortStart = Integer.parseInt(storage.getProperty("rmi.port", Integer.toString(defaultRmiPortStart)));
+            defaultRmiRegistryPortStart = Integer.parseInt(storage.getProperty("rmi.registry.port", Integer.toString(defaultRmiRegistryPortStart)));
+            defaultRmiServerPortStart = Integer.parseInt(storage.getProperty("rmi.server.port", Integer.toString(defaultRmiServerPortStart)));
             Map<String, Instance> newInstances = new HashMap<String, Instance>();
             for (int i = 0; i < count; i++) {
                 String name = storage.getProperty("item." + i + ".name", null);
@@ -148,9 +151,13 @@ public class AdminServiceImpl implements
         }
         int rmiRegistryPort = settings.getRmiRegistryPort();
         if (rmiRegistryPort <= 0) {
-            rmiRegistryPort = ++defaultRmiPortStart;
+            rmiRegistryPort = ++defaultRmiRegistryPortStart;
+        }
+        int rmiServerPort = settings.getRmiServerPort();
+        if (rmiServerPort <= 0) {
+            rmiServerPort = ++defaultRmiServerPortStart;
         }
-        println(Ansi.ansi().a("Creating new instance on SSH port ").a(sshPort).a(" and RMI registry port ").a(rmiRegistryPort).a(" at: ").a(Ansi.Attribute.INTENSITY_BOLD).a(karafBase).a(Ansi.Attribute.RESET).toString());
+        println(Ansi.ansi().a("Creating new instance on SSH port ").a(sshPort).a(" and RMI ports ").a(rmiRegistryPort).a("/").a(rmiServerPort).a(" at: ").a(Ansi.Attribute.INTENSITY_BOLD).a(karafBase).a(Ansi.Attribute.RESET).toString());
 
         mkdir(karafBase, "bin");
         mkdir(karafBase, "etc");
@@ -176,6 +183,7 @@ public class AdminServiceImpl implements
         props.put("${SUBST-KARAF-BASE}", karafBase.getPath());
         props.put("${SUBST-SSH-PORT}", Integer.toString(sshPort));
         props.put("${SUBST-RMI-REGISTRY-PORT}", Integer.toString(rmiRegistryPort));
+        props.put("${SUBST-RMI-SERVER-PORT}", Integer.toString(rmiServerPort));
         copyFilteredResourceToDir(karafBase, "etc/system.properties", props);
         copyFilteredResourceToDir(karafBase, "etc/org.apache.karaf.shell.cfg", props);
         copyFilteredResourceToDir(karafBase, "etc/org.apache.karaf.management.cfg", props);
@@ -298,7 +306,8 @@ public class AdminServiceImpl implements
         Properties storage = new Properties();
         Instance[] data = getInstances();
         storage.setProperty("ssh.port", Integer.toString(defaultSshPortStart));
-        storage.setProperty("rmi.port", Integer.toString(defaultRmiPortStart));
+        storage.setProperty("rmi.registry.port", Integer.toString(defaultRmiRegistryPortStart));
+        storage.setProperty("rmi.server.port", Integer.toString(defaultRmiServerPortStart));
         storage.setProperty("count", Integer.toString(data.length));
         for (int i = 0; i < data.length; i++) {
             storage.setProperty("item." + i + ".name", data[i].getName());

Modified: karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java Fri Feb 25 14:26:00 2011
@@ -194,6 +194,50 @@ public class InstanceImpl implements Ins
         }
     }
 
+    public int getRmiServerPort() {
+        InputStream is = null;
+        try {
+            File f = new File(location, "etc/org.apache.karaf.management.cfg");
+            is = new FileInputStream(f);
+            Properties props = new Properties();
+            props.load(is);
+            String loc = props.getProperty("rmiServerPort");
+            return Integer.parseInt(loc);
+        } catch (Exception e) {
+            return 0;
+        } finally {
+            if (is != null) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    // Ignore
+                }
+            }
+        }
+    }
+
+    public void changeRmiServerPort(int port) throws Exception {
+        checkProcess();
+        if (this.process != null) {
+            throw new IllegalStateException("Instance not stopped");
+        }
+        Properties props = new Properties();
+        File f = new File(location, "etc/org.apache.karaf.management.cfg");
+        InputStream is = new FileInputStream(f);
+        try {
+            props.load(is);
+        } finally {
+            is.close();
+        }
+        props.setProperty("rmiServerPort", Integer.toString(port));
+        OutputStream os = new FileOutputStream(f);
+        try {
+            props.store(os, null);
+        } finally {
+            os.close();
+        }
+    }
+
     public String getJavaOpts() {
         return javaOpts;
     }

Modified: karaf/branches/karaf-2.2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg Fri Feb 25 14:26:00 2011
@@ -19,7 +19,7 @@
 
 #
 rmiRegistryPort = ${SUBST-RMI-REGISTRY-PORT}
-rmiServerPort = 44444
+rmiServerPort = ${SUBST-RMI-SERVER-PORT}
 jmxRealm = karaf
 serviceUrl = service:jmx:rmi://localhost:${rmiServerPort}/jndi/rmi://localhost:${rmiRegistryPort}/karaf-${karaf.name}
 daemon = true

Modified: karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java Fri Feb 25 14:26:00 2011
@@ -27,28 +27,29 @@ import org.junit.Assert;
 public class InstanceSettingsTest extends TestCase {
     public void testInstanceSettings() {
         InstanceSettings is =
-            new InstanceSettings(1, 1, null, null, Collections.<String>emptyList(), Arrays.asList("hi"));
+            new InstanceSettings(1, 1, 1, null, null, Collections.<String>emptyList(), Arrays.asList("hi"));
         assertEquals(1, is.getSshPort());
         assertEquals(1, is.getRmiRegistryPort());
+        assertEquals(1, is.getRmiServerPort());
         Assert.assertNull(is.getLocation());
         assertEquals(Arrays.asList("hi"), is.getFeatures());
         assertEquals(0, is.getFeatureURLs().size());
     }
     
     public void testEqualsHashCode() {
-        testEqualsHashCode(1, 1, "top", "foo", Collections.<String>emptyList(), Arrays.asList("hi"));
-        testEqualsHashCode(0, 0, null, null, null, null);
+        testEqualsHashCode(1, 1, 1, "top", "foo", Collections.<String>emptyList(), Arrays.asList("hi"));
+        testEqualsHashCode(0, 0, 0, null, null, null, null);
     }
 
-    private void testEqualsHashCode(int sshPort, int rmiPort, String location, String javaOpts, List<String> featureURLs, List<String> features) {
-        InstanceSettings is = new InstanceSettings(sshPort, rmiPort, location, javaOpts, featureURLs, features);
-        InstanceSettings is2 = new InstanceSettings(sshPort, rmiPort, location, javaOpts, featureURLs, features);
+    private void testEqualsHashCode(int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, List<String> featureURLs, List<String> features) {
+        InstanceSettings is = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features);
+        InstanceSettings is2 = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features);
         assertEquals(is, is2);
         assertEquals(is.hashCode(), is2.hashCode());
     }
     
     public void testEqualsHashCode2() {
-        InstanceSettings is = new InstanceSettings(1, 1, "top", "foo", Collections.<String>emptyList(), Arrays.asList("hi"));
+        InstanceSettings is = new InstanceSettings(1, 1, 1,"top", "foo", Collections.<String>emptyList(), Arrays.asList("hi"));
         Assert.assertFalse(is.equals(null));
         Assert.assertFalse(is.equals(new Object()));
         assertEquals(is, is);

Modified: karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java (original)
+++ karaf/branches/karaf-2.2.x/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java Fri Feb 25 14:26:00 2011
@@ -46,7 +46,7 @@ public class AdminServiceImplTest extend
                 os.close();
             }
             
-            InstanceSettings s = new InstanceSettings(8122, 1122, null, null, null, Arrays.asList("test"));
+            InstanceSettings s = new InstanceSettings(8122, 1122, 44444, null, null, null, Arrays.asList("test"));
             as.handleFeatures(f, s);
             
             Properties p2 = new Properties();
@@ -72,7 +72,7 @@ public class AdminServiceImplTest extend
         AdminServiceImpl service = new AdminServiceImpl();
         service.setStorageLocation(new File("target/instances/" + System.currentTimeMillis()));
 
-        InstanceSettings settings = new InstanceSettings(8122, 1122, getName(), null, null, null);
+        InstanceSettings settings = new InstanceSettings(8122, 1122, 44444, getName(), null, null, null);
         Instance instance = service.createInstance(getName(), settings);
 
         assertFileExists(instance.getLocation(), "etc/config.properties");
@@ -97,7 +97,7 @@ public class AdminServiceImplTest extend
         AdminServiceImpl service = new AdminServiceImpl();
         service.setStorageLocation(new File("target/instances/" + System.currentTimeMillis()));
 
-        InstanceSettings settings = new InstanceSettings(8122, 1122, getName(), null, null, null);
+        InstanceSettings settings = new InstanceSettings(8122, 1122, 44444, getName(), null, null, null);
         Instance instance = service.createInstance(getName(), settings);
 
         service.renameInstance(getName(), getName() + "b");

Modified: karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java (original)
+++ karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java Fri Feb 25 14:26:00 2011
@@ -24,18 +24,20 @@ public interface AdminServiceMBean {
     String INSTANCE_NAME = "Name";
     String INSTANCE_IS_ROOT = "Is Root";
     String INSTANCE_SSH_PORT = "SSH Port";
-    String INSTANCE_RMI_PORT = "RMI Port";
+    String INSTANCE_RMI_REGISTRY_PORT = "RMI Registry Port";
+    String INSTANCE_RMI_SERVER_PORT = "RMI Server Port";
     String INSTANCE_STATE = "State";
     String INSTANCE_LOCATION = "Location";
     String INSTANCE_JAVAOPTS = "JavaOpts";
 
-    String[] INSTANCE = {INSTANCE_PID, INSTANCE_NAME, INSTANCE_IS_ROOT, INSTANCE_SSH_PORT, INSTANCE_RMI_PORT,
-            INSTANCE_STATE, INSTANCE_LOCATION, INSTANCE_JAVAOPTS };
+    String[] INSTANCE = {INSTANCE_PID, INSTANCE_NAME, INSTANCE_IS_ROOT, INSTANCE_SSH_PORT, INSTANCE_RMI_REGISTRY_PORT,
+            INSTANCE_RMI_SERVER_PORT, INSTANCE_STATE, INSTANCE_LOCATION, INSTANCE_JAVAOPTS };
 
     // Operations
-    int createInstance(String name, int sshPort, int rmiPort, String location, String javaOpts, String features, String featureURLs) throws Exception;
+    int createInstance(String name, int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, String features, String featureURLs) throws Exception;
     void changeSshPort(String name, int port) throws Exception;
     void changeRmiRegistryPort(String name, int port) throws Exception;
+    void changeRmiServerPort(String name, int port) throws Exception;
     void changeJavaOpts(String name, String javaopts) throws Exception;
     void destroyInstance(String name) throws Exception;
     void startInstance(String name, String opts) throws Exception;

Modified: karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java (original)
+++ karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java Fri Feb 25 14:26:00 2011
@@ -55,13 +55,14 @@ public class JmxInstance {
             itemValues[2] = instance.isRoot();
             itemValues[3] = instance.getSshPort();
             itemValues[4] = instance.getRmiRegistryPort();
+            itemValues[5] = instance.getRmiServerPort();
             try {
-                itemValues[5] = instance.getState();
+                itemValues[6] = instance.getState();
             } catch (Exception e) {
-                itemValues[5] = "Error";
+                itemValues[6] = "Error";
             }
-            itemValues[6] = instance.getLocation();
-            itemValues[7] = instance.getJavaOpts();
+            itemValues[7] = instance.getLocation();
+            itemValues[8] = instance.getJavaOpts();
 
             data = new CompositeDataSupport(INSTANCE, itemNames, itemValues);
         } catch (OpenDataException e) {
@@ -91,14 +92,17 @@ public class JmxInstance {
             itemTypes[4] = SimpleType.INTEGER;
             descriptions[4] = "The RMI registry port that can be used to manage the instance.";
 
-            itemTypes[5] = SimpleType.STRING;
-            descriptions[5] = "The state of the instance.";
+            itemTypes[5] = SimpleType.INTEGER;
+            descriptions[5] = "The RMI server port that can be used to manage the instance.";
 
             itemTypes[6] = SimpleType.STRING;
-            descriptions[6] = "The location of the instance.";
+            descriptions[6] = "The state of the instance.";
 
             itemTypes[7] = SimpleType.STRING;
-            descriptions[7] = "The java options of the instance.";
+            descriptions[7] = "The location of the instance.";
+
+            itemTypes[8] = SimpleType.STRING;
+            descriptions[8] = "The java options of the instance.";
 
             return new CompositeType("Instance", desc, itemNames, descriptions, itemTypes);
         } catch (OpenDataException e) {

Modified: karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java (original)
+++ karaf/branches/karaf-2.2.x/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java Fri Feb 25 14:26:00 2011
@@ -46,7 +46,7 @@ public class AdminServiceMBeanImpl exten
         this.adminService = adminService;
     }
 
-    public int createInstance(String name, int sshPort, int rmiPort, String location, String javaOpts, String features, String featureURLs)
+    public int createInstance(String name, int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, String features, String featureURLs)
             throws Exception {
         if ("".equals(location)) {
             location = null;
@@ -55,7 +55,7 @@ public class AdminServiceMBeanImpl exten
             javaOpts = null;
         }
 
-        InstanceSettings settings = new InstanceSettings(sshPort, rmiPort, location, javaOpts,
+        InstanceSettings settings = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts,
                 parseStringList(featureURLs), parseStringList(features));
 
         Instance inst = adminService.createInstance(name, settings);
@@ -74,6 +74,10 @@ public class AdminServiceMBeanImpl exten
         getExistingInstance(name).changeRmiRegistryPort(port);
     }
 
+    public void changeRmiServerPort(String name, int port) throws Exception {
+        getExistingInstance(name).changeRmiServerPort(port);
+    }
+
     public void changeJavaOpts(String name, String javaOpts) throws Exception {
         getExistingInstance(name).changeJavaOpts(javaOpts);
     }

Modified: karaf/branches/karaf-2.2.x/admin/management/src/main/resources/OSGI-INF/bundle.info
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/management/src/main/resources/OSGI-INF/bundle.info?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/management/src/main/resources/OSGI-INF/bundle.info (original)
+++ karaf/branches/karaf-2.2.x/admin/management/src/main/resources/OSGI-INF/bundle.info Fri Feb 25 14:26:00 2011
@@ -16,6 +16,7 @@
     \u001B[36mcreateInstance(name, sshPort, rmiPort, location, javaOpts, features, featureURLs)\u001B[0m Creates a new Karaf instance.
     \u001B[36mchangeSshPort(name, port)\u001B[0m Changes the SSH port number of an existing Karaf instance.
     \u001B[36mchangeRmiRegistryPort(name, port)\u001B[0m Changes the RMI registry port number of an existing Karaf instance.
+    \u001B[36mchangeRmiServerPort(name, port)\u001B[0m Changes the RMI server port number of an existing Karaf instance.
     \u001B[36mchangeJavaOpts(name, javaopts)\u001B[0m Changes the Java options of an existing Karaf instance.
     \u001B[36mdestroyInstance(name)\u001B[0m Destroys an existing Karaf instance.
     \u001B[36mstartInstance(name)\u001B[0m Starts an existing Karaf instance.

Modified: karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java (original)
+++ karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java Fri Feb 25 14:26:00 2011
@@ -50,6 +50,7 @@ public class JmxInstanceTest extends Tes
         EasyMock.expect(i.isRoot()).andReturn(false);
         EasyMock.expect(i.getSshPort()).andReturn(0);
         EasyMock.expect(i.getRmiRegistryPort()).andReturn(0);
+        EasyMock.expect(i.getRmiServerPort()).andReturn(0);
         EasyMock.expect(i.getState()).andThrow(new Exception("gotcha"));
         EasyMock.expect(i.getLocation()).andReturn("somewhere");
         EasyMock.expect(i.getJavaOpts()).andReturn("someopts");
@@ -65,7 +66,8 @@ public class JmxInstanceTest extends Tes
         Assert.assertEquals("MyInstance", cd.get("Name"));
         Assert.assertEquals(false, cd.get("Is Root"));
         Assert.assertEquals(0, cd.get("SSH Port"));
-        Assert.assertEquals(0, cd.get("RMI Port"));
+        Assert.assertEquals(0, cd.get("RMI Registry Port"));
+        Assert.assertEquals(0, cd.get("RMI Server Port"));
         Assert.assertEquals("Error", cd.get("State"));
         Assert.assertEquals("somewhere", cd.get("Location"));
         Assert.assertEquals("someopts", cd.get("JavaOpts"));
@@ -78,6 +80,7 @@ public class JmxInstanceTest extends Tes
         EasyMock.expect(i.isRoot()).andReturn(true);
         EasyMock.expect(i.getSshPort()).andReturn(0);
         EasyMock.expect(i.getRmiRegistryPort()).andReturn(0);
+        EasyMock.expect(i.getRmiServerPort()).andReturn(0);
         EasyMock.expect(i.getState()).andReturn("Started");
         EasyMock.expect(i.getLocation()).andReturn(null);
         EasyMock.expect(i.getJavaOpts()).andReturn(null);
@@ -93,7 +96,8 @@ public class JmxInstanceTest extends Tes
         Assert.assertEquals("MyInstance", cd.get("Name"));
         Assert.assertEquals(true, cd.get("Is Root"));
         Assert.assertEquals(0, cd.get("SSH Port"));
-        Assert.assertEquals(0, cd.get("RMI Port"));
+        Assert.assertEquals(0, cd.get("RMI Registry Port"));
+        Assert.assertEquals(0, cd.get("RMI Server Port"));
         Assert.assertEquals("Started", cd.get("State"));
         Assert.assertNull(cd.get("Location"));
         Assert.assertNull(cd.get("JavaOpts"));

Modified: karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java (original)
+++ karaf/branches/karaf-2.2.x/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java Fri Feb 25 14:26:00 2011
@@ -31,7 +31,7 @@ import org.junit.Assert;
 
 public class AdminServiceMBeanImplTest extends TestCase {
     public void testCreateInstance() throws Exception {
-        final InstanceSettings is = new InstanceSettings(123, 456, "somewhere", "someopts",
+        final InstanceSettings is = new InstanceSettings(123, 456, 789, "somewhere", "someopts",
                 Collections.<String>emptyList(), Arrays.asList("webconsole", "funfeat"));
         
         final Instance inst = EasyMock.createMock(Instance.class);
@@ -46,11 +46,11 @@ public class AdminServiceMBeanImplTest e
         ab.setAdminService(as);
         Assert.assertSame(as, ab.getAdminService());
         
-        assertEquals(42, ab.createInstance("t1", 123, 456, "somewhere", "someopts", " webconsole,  funfeat", ""));
+        assertEquals(42, ab.createInstance("t1", 123, 456, 789, "somewhere", "someopts", " webconsole,  funfeat", ""));
     }
     
     public void testCreateInstance2() throws Exception {
-        final InstanceSettings is = new InstanceSettings(0, 0, null, null,
+        final InstanceSettings is = new InstanceSettings(0, 0, 0, null, null,
                 Collections.<String>emptyList(), Collections.<String>emptyList());
         
         AdminService as = EasyMock.createMock(AdminService.class);
@@ -61,7 +61,7 @@ public class AdminServiceMBeanImplTest e
         ab.setAdminService(as);
         Assert.assertSame(as, ab.getAdminService());
         
-        assertEquals(-1, ab.createInstance("t1", 0, 0, "", "", "", ""));
+        assertEquals(-1, ab.createInstance("t1", 0, 0, 0, "", "", "", ""));
     }
     
     public void testGetInstances() throws Exception {       
@@ -69,6 +69,7 @@ public class AdminServiceMBeanImplTest e
         EasyMock.expect(i1.getPid()).andReturn(1234);
         EasyMock.expect(i1.getSshPort()).andReturn(8818);
         EasyMock.expect(i1.getRmiRegistryPort()).andReturn(1122);
+        EasyMock.expect(i1.getRmiServerPort()).andReturn(44444);
         EasyMock.expect(i1.getName()).andReturn("i1");
         EasyMock.expect(i1.isRoot()).andReturn(true);
         EasyMock.expect(i1.getLocation()).andReturn("somewhere");
@@ -94,6 +95,7 @@ public class AdminServiceMBeanImplTest e
         Assert.assertTrue(cd1.containsValue(1234));
         Assert.assertTrue(cd1.containsValue(8818));
         Assert.assertTrue(cd1.containsValue(1122));
+        Assert.assertTrue(cd1.containsValue(44444));
         Assert.assertTrue(cd1.containsValue("somewhere"));
         Assert.assertTrue(cd1.containsValue("someopts"));
         Assert.assertTrue(cd1.containsValue("Stopped"));
@@ -216,6 +218,25 @@ public class AdminServiceMBeanImplTest e
         EasyMock.verify(inst);
     }
 
+    public void testRmiServerChangePort() throws Exception {
+        Instance inst = EasyMock.createMock(Instance.class);
+        inst.changeRmiServerPort(44444);
+        EasyMock.expectLastCall();
+        EasyMock.replay(inst);
+
+        AdminService as = EasyMock.createMock(AdminService.class);
+        EasyMock.expect(as.getInstance("test instance")).andReturn(inst);
+        EasyMock.replay(as);
+
+        AdminServiceMBeanImpl ab = new AdminServiceMBeanImpl();
+        ab.setAdminService(as);
+        Assert.assertSame(as, ab.getAdminService());
+
+        ab.changeRmiServerPort("test instance", 44444);
+        EasyMock.verify(as);
+        EasyMock.verify(inst);
+    }
+
     public void testChangeOptions() throws Exception {
         Instance inst = EasyMock.createMock(Instance.class);
         inst.changeJavaOpts("new opts");

Modified: karaf/branches/karaf-2.2.x/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java (original)
+++ karaf/branches/karaf-2.2.x/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java Fri Feb 25 14:26:00 2011
@@ -112,12 +112,13 @@ public class AdminPlugin extends Abstrac
             success = true;
         } else if ("create".equals(action)) {
             int sshPort = parsePortNumber(req.getParameter("sshPort"));
-            int rmiPort = parsePortNumber(req.getParameter("rmiPort"));
+            int rmiRegistryPort = parsePortNumber(req.getParameter("rmiRegistryPort"));
+            int rmiServerPort = parsePortNumber(req.getParameter("rmiServerPort"));
             String location = parseString(req.getParameter("location"));
             String javaOpts = parseString(req.getParameter("javaOpts"));
             List<String> featureURLs = parseStringList(req.getParameter("featureURLs"));
             List<String> features = parseStringList(req.getParameter("features"));
-            InstanceSettings settings = new InstanceSettings(sshPort, rmiPort, location, javaOpts, featureURLs, features);
+            InstanceSettings settings = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features);
             success = createInstance(name, settings);
         } else if ("destroy".equals(action)) {
             success = destroyInstance(name);
@@ -240,8 +241,10 @@ public class AdminPlugin extends Abstrac
         jw.value(instance.getName());
         jw.key("sshPort");
         jw.value(instance.getSshPort());
-        jw.key("rmiPort");
+        jw.key("rmiRegistryPort");
         jw.value(instance.getRmiRegistryPort());
+        jw.key("rmiServerPort");
+        jw.value(instance.getRmiServerPort());
         jw.key("state");
         jw.value(instance.getState());
         jw.key("location");

Modified: karaf/branches/karaf-2.2.x/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java?rev=1074532&r1=1074531&r2=1074532&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java (original)
+++ karaf/branches/karaf-2.2.x/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java Fri Feb 25 14:26:00 2011
@@ -54,7 +54,7 @@ public class AdminPluginTest extends Tes
     
     public void testDoPostCreate() throws Exception {
         InstanceSettings is = 
-            new InstanceSettings(1234, 5678, null, null, Collections.singletonList("http://someURL"), Arrays.asList("abc", "def"));
+            new InstanceSettings(123, 456, 789,  null, null, Collections.singletonList("http://someURL"), Arrays.asList("abc", "def"));
         AdminService adminService = EasyMock.createMock(AdminService.class);
         EasyMock.expect(adminService.createInstance("instance1", is)).andReturn(null);
         EasyMock.expect(adminService.getInstances()).andReturn(new Instance[] {}).anyTimes();
@@ -66,8 +66,9 @@ public class AdminPluginTest extends Tes
         final Map<String, String> params = new HashMap<String, String>();
         params.put("action", "create");
         params.put("name", "instance1");
-        params.put("sshPort", "1234");
-        params.put("rmiPort", "5678");
+        params.put("sshPort", "123");
+        params.put("rmiRegistryPort", "456");
+        params.put("rmiServerPort", "789");
         params.put("featureURLs", "http://someURL");
         params.put("features", "abc,def");
         HttpServletRequest req = EasyMock.createMock(HttpServletRequest.class);