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/24 15:28:53 UTC
svn commit: r1074161 - in /karaf/trunk:
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/karaf/admin/comma...
Author: jbonofre
Date: Thu Feb 24 14:28:52 2011
New Revision: 1074161
URL: http://svn.apache.org/viewvc?rev=1074161&view=rev
Log:
[KARAF-476] Admin feature now handles the RMI server port property.
Added:
karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java
Modified:
karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CloneCommand.java
karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java
karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java
karaf/trunk/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
karaf/trunk/admin/command/src/main/resources/OSGI-INF/bundle.info
karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java
karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java
karaf/trunk/admin/core/pom.xml
karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java
karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
karaf/trunk/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg
karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java
karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java
karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java
karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
karaf/trunk/admin/management/src/main/resources/OSGI-INF/bundle.info
karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java
karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java
karaf/trunk/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java
karaf/trunk/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java
Added: karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java?rev=1074161&view=auto
==============================================================================
--- karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java (added)
+++ karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeRmiServerPortCommand.java Thu Feb 24 14:28:52 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 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;
+
+ protected Object doExecute() throws Exception {
+ getExistingInstance(instance).changeRmiServerPort(port);
+ return null;
+ }
+
+}
Modified: karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CloneCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CloneCommand.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CloneCommand.java (original)
+++ karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CloneCommand.java Thu Feb 24 14:28:52 2011
@@ -20,7 +20,6 @@ import org.apache.felix.gogo.commands.Ar
import org.apache.felix.gogo.commands.Command;
import org.apache.felix.gogo.commands.Option;
import org.apache.karaf.admin.InstanceSettings;
-import org.apache.karaf.admin.command.AdminCommandSupport;
/**
* <p>
@@ -33,8 +32,11 @@ public class CloneCommand extends AdminC
@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 clone container instance in the file system", required = false, multiValued = false)
String location;
@@ -49,7 +51,7 @@ public class CloneCommand extends AdminC
String cloneName;
protected Object doExecute() throws Exception {
- InstanceSettings settings = new InstanceSettings(sshPort, rmiPort, location, javaOpts, null, null);
+ InstanceSettings settings = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, null, null);
getAdminService().cloneInstance(name, cloneName, settings);
return null;
}
Modified: karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java (original)
+++ karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/CreateCommand.java Thu Feb 24 14:28:52 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/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java (original)
+++ karaf/trunk/admin/command/src/main/java/org/apache/karaf/admin/command/ListCommand.java Thu Feb 24 14:28:52 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 rmiRegistry = Integer.toString(instance.getRmiRegistryPort());
+ String rmiServer = Integer.toString(instance.getRmiServerPort());
+ sb.append(rmiRegistry).append("/").append(rmiServer);
+ for (int i = (rmiRegistry.length() + rmiServer.length() + 1); i < 15; i++) {
sb.append(' ');
}
- sb.append(r);
sb.append("] [");
String state = instance.getState();
while (state.length() < "starting".length()) {
Modified: karaf/trunk/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml (original)
+++ karaf/trunk/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml Thu Feb 24 14:28:52 2011
@@ -103,6 +103,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/trunk/admin/command/src/main/resources/OSGI-INF/bundle.info
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/main/resources/OSGI-INF/bundle.info?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/main/resources/OSGI-INF/bundle.info (original)
+++ karaf/trunk/admin/command/src/main/resources/OSGI-INF/bundle.info Thu Feb 24 14:28:52 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/trunk/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java (original)
+++ karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/command/CreateCommandTest.java Thu Feb 24 14:28:52 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/trunk/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java (original)
+++ karaf/trunk/admin/command/src/test/java/org/apache/karaf/admin/main/ExecuteTest.java Thu Feb 24 14:28:52 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/trunk/admin/core/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/pom.xml?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/pom.xml (original)
+++ karaf/trunk/admin/core/pom.xml Thu Feb 24 14:28:52 2011
@@ -55,6 +55,11 @@
</dependency>
<dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.utils</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.karaf.shell</groupId>
<artifactId>org.apache.karaf.shell.console</artifactId>
</dependency>
@@ -175,6 +180,7 @@
*
</Import-Package>
<Private-Package>
+ org.apache.felix.utils.properties,
org.apache.karaf.admin.bin,
org.apache.karaf.admin.etc,
org.apache.karaf.admin.internal,
Modified: karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/Instance.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/Instance.java (original)
+++ karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/Instance.java Thu Feb 24 14:28:52 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/trunk/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java (original)
+++ karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/InstanceSettings.java Thu Feb 24 14:28:52 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/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java (original)
+++ karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java Thu Feb 24 14:28:52 2011
@@ -48,7 +48,9 @@ public class AdminServiceImpl implements
private int defaultSshPortStart = 8101;
- private int defaultRmiPortStart = 1099;
+ private int defaultRmiRegistryPortStart = 1099;
+
+ private int defaultRmiServerPortStart = 44444;
private File storageLocation;
@@ -108,7 +110,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);
@@ -149,9 +152,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 registry port ").a(rmiRegistryPort).a(" / RMI server port ").a(rmiServerPort).a(" at: ").a(Ansi.Attribute.INTENSITY_BOLD).a(karafBase).a(Ansi.Attribute.RESET).toString());
mkdir(karafBase, "bin");
mkdir(karafBase, "etc");
@@ -177,6 +184,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);
@@ -329,6 +337,8 @@ public class AdminServiceImpl implements
props.put(new Integer(instance.getSshPort()).toString(), new Integer(settings.getSshPort()).toString());
if (settings.getRmiRegistryPort() > 0)
props.put(new Integer(instance.getRmiRegistryPort()).toString(), new Integer(settings.getRmiRegistryPort()).toString());
+ if (settings.getRmiServerPort() > 0)
+ props.put(new Integer(instance.getRmiServerPort()).toString(), new Integer(settings.getRmiServerPort()).toString());
// filtering clone files
filterResource(cloneLocation, "etc/customer.properties", props);
filterResource(cloneLocation, "etc/org.apache.karaf.management.cfg", props);
@@ -356,7 +366,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/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java (original)
+++ karaf/trunk/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java Thu Feb 24 14:28:52 2011
@@ -19,16 +19,13 @@ package org.apache.karaf.admin.internal;
import java.io.*;
import java.net.Socket;
import java.net.URL;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
+import org.apache.felix.utils.properties.InterpolationHelper;
+import org.apache.felix.utils.properties.Properties;
import org.apache.karaf.admin.Instance;
import org.apache.karaf.jpm.Process;
import org.apache.karaf.jpm.ProcessBuilderFactory;
import org.apache.karaf.jpm.impl.ScriptUtils;
-import org.fusesource.jansi.Ansi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -107,24 +104,11 @@ public class InstanceImpl implements Ins
}
public int getSshPort() {
- InputStream is = null;
try {
- File f = new File(location, "etc/org.apache.karaf.shell.cfg");
- is = new FileInputStream(f);
- Properties props = new Properties();
- props.load(is);
- String loc = props.getProperty("sshPort");
+ String loc = this.getConfiguration(new File(location, "etc/org.apache.karaf.shell.cfg"), "sshPort");
return Integer.parseInt(loc);
} catch (Exception e) {
return 0;
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (IOException e) {
- // Ignore
- }
- }
}
}
@@ -133,67 +117,99 @@ public class InstanceImpl implements Ins
if (this.process != null) {
throw new IllegalStateException("Instance not stopped");
}
- Properties props = new Properties();
- File f = new File(location, "etc/org.apache.karaf.shell.cfg");
- InputStream is = new FileInputStream(f);
+ this.changeConfiguration(new File(location, "etc/org.apache.karaf.shell.cfg"),
+ "sshPort", Integer.toString(port));
+ }
+
+ public int getRmiRegistryPort() {
try {
- props.load(is);
- } finally {
- is.close();
+ String loc = this.getConfiguration(new File(location, "etc/org.apache.karaf.management.cfg"), "rmiRegistryPort");
+ return Integer.parseInt(loc);
+ } catch (Exception e) {
+ return 0;
}
- props.setProperty("sshPort", Integer.toString(port));
- OutputStream os = new FileOutputStream(f);
- try {
- props.store(os, null);
- } finally {
- os.close();
+ }
+
+ public void changeRmiRegistryPort(int port) throws Exception {
+ checkProcess();
+ if (this.process != null) {
+ throw new IllegalStateException("Instance not stopped");
}
+ this.changeConfiguration(new File(location, "etc/org.apache.karaf.management.cfg"),
+ "rmiRegistryPort", Integer.toString(port));
}
- public int getRmiRegistryPort() {
- InputStream is = null;
+ public int getRmiServerPort() {
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("rmiRegistryPort");
+ String loc = this.getConfiguration(new File(location, "etc/org.apache.karaf.management.cfg"), "rmiServerPort");
return Integer.parseInt(loc);
} catch (Exception e) {
return 0;
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (IOException e) {
- // Ignore
- }
- }
}
}
- public void changeRmiRegistryPort(int port) throws Exception {
+ public void changeRmiServerPort(int port) throws Exception {
checkProcess();
if (this.process != null) {
throw new IllegalStateException("Instance not stopped");
}
+ this.changeConfiguration(new File(location, "etc/org.apache.karaf.management.cfg"),
+ "rmiServerPort", Integer.toString(port));
+ }
+
+ /**
+ * Change a configuration property in a given configuration file.
+ *
+ * @param configurationFile the configuration file where to update the configuration property.
+ * @param propertyName the property name.
+ * @param propertyValue the property value.
+ * @throws Exception if a failure occurs.
+ */
+ private void changeConfiguration(File configurationFile, String propertyName, String propertyValue) throws Exception {
Properties props = new Properties();
- File f = new File(location, "etc/org.apache.karaf.management.cfg");
- InputStream is = new FileInputStream(f);
+ InputStream is = new FileInputStream(configurationFile);
try {
props.load(is);
} finally {
is.close();
}
- props.setProperty("rmiRegistryPort", Integer.toString(port));
- OutputStream os = new FileOutputStream(f);
+ props.put(propertyName, propertyValue);
+ OutputStream os = new FileOutputStream(configurationFile);
try {
- props.store(os, null);
+ props.save(os);
} finally {
os.close();
}
}
+ /**
+ * Read a given configuration file to get the value of a given property.
+ *
+ * @param configurationFile the configuration file where to lookup property.
+ * @param propertyName the property name to look for.
+ * @return the property value.
+ * @throws Exception in case of read failure.
+ */
+ private String getConfiguration(File configurationFile, String propertyName) throws Exception {
+ InputStream is = null;
+ try {
+ is = new FileInputStream(configurationFile);
+ Properties props = new Properties();
+ props.load(is);
+ return props.get(propertyName);
+ } catch (Exception e) {
+ throw e;
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
+
public String getJavaOpts() {
return javaOpts;
}
@@ -307,15 +323,20 @@ public class InstanceImpl implements Ins
props.put("karaf.base", new File(location).getCanonicalPath());
props.put("karaf.home", System.getProperty("karaf.home"));
props.put("karaf.data", new File(new File(location), "data").getCanonicalPath());
- for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
- String name = (String) e.nextElement();
- props.setProperty(name,
- substVars(props.getProperty(name), name, null, props));
- }
- int port = Integer.parseInt(props.getProperty(KARAF_SHUTDOWN_PORT, "0"));
- String host = props.getProperty(KARAF_SHUTDOWN_HOST, "localhost");
- String portFile = props.getProperty(KARAF_SHUTDOWN_PORT_FILE);
- String shutdown = props.getProperty(KARAF_SHUTDOWN_COMMAND, DEFAULT_SHUTDOWN_COMMAND);
+ for (String name : props.keySet()) {
+ props.put(name,
+ InterpolationHelper.substVars(props.get(name), name, null, props, null));
+ }
+ int port = 0;
+ if (props.get(KARAF_SHUTDOWN_PORT) != null)
+ port = Integer.parseInt(props.get(KARAF_SHUTDOWN_PORT));
+ String host = "localhost";
+ if (props.get(KARAF_SHUTDOWN_HOST) != null)
+ host = props.get(KARAF_SHUTDOWN_HOST);
+ String portFile = props.get(KARAF_SHUTDOWN_PORT_FILE);
+ String shutdown = DEFAULT_SHUTDOWN_COMMAND;
+ if (props.get(KARAF_SHUTDOWN_COMMAND) != null)
+ shutdown = props.get(KARAF_SHUTDOWN_COMMAND);
if (port == 0 && portFile != null) {
BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(portFile)));
String portStr = r.readLine();
@@ -389,97 +410,4 @@ public class InstanceImpl implements Ins
return configProps;
}
- private static final String DELIM_START = "${";
- private static final String DELIM_STOP = "}";
-
- protected static String substVars(String val, String currentKey,
- Map<String, String> cycleMap, Properties configProps)
- throws IllegalArgumentException {
- // If there is currently no cycle map, then create
- // one for detecting cycles for this invocation.
- if (cycleMap == null) {
- cycleMap = new HashMap<String, String>();
- }
-
- // Put the current key in the cycle map.
- cycleMap.put(currentKey, currentKey);
-
- // Assume we have a value that is something like:
- // "leading ${foo.${bar}} middle ${baz} trailing"
-
- // Find the first ending '}' variable delimiter, which
- // will correspond to the first deepest nested variable
- // placeholder.
- int stopDelim = val.indexOf(DELIM_STOP);
-
- // Find the matching starting "${" variable delimiter
- // by looping until we find a start delimiter that is
- // greater than the stop delimiter we have found.
- int startDelim = val.indexOf(DELIM_START);
- while (stopDelim >= 0) {
- int idx = val.indexOf(DELIM_START, startDelim + DELIM_START.length());
- if ((idx < 0) || (idx > stopDelim)) {
- break;
- } else if (idx < stopDelim) {
- startDelim = idx;
- }
- }
-
- // If we do not have a start or stop delimiter, then just
- // return the existing value.
- if ((startDelim < 0) && (stopDelim < 0)) {
- return val;
- }
- // At this point, we found a stop delimiter without a start,
- // so throw an exception.
- else if (((startDelim < 0) || (startDelim > stopDelim))
- && (stopDelim >= 0)) {
- throw new IllegalArgumentException(
- "stop delimiter with no start delimiter: "
- + val);
- }
-
- // At this point, we have found a variable placeholder so
- // we must perform a variable substitution on it.
- // Using the start and stop delimiter indices, extract
- // the first, deepest nested variable placeholder.
- String variable =
- val.substring(startDelim + DELIM_START.length(), stopDelim);
-
- // Verify that this is not a recursive variable reference.
- if (cycleMap.get(variable) != null) {
- throw new IllegalArgumentException(
- "recursive variable reference: " + variable);
- }
-
- // Get the value of the deepest nested variable placeholder.
- // Try to configuration properties first.
- String substValue = (configProps != null)
- ? configProps.getProperty(variable, null)
- : null;
- if (substValue == null) {
- // Ignore unknown property values.
- substValue = System.getProperty(variable, "");
- }
-
- // Remove the found variable from the cycle map, since
- // it may appear more than once in the value and we don't
- // want such situations to appear as a recursive reference.
- cycleMap.remove(variable);
-
- // Append the leading characters, the substituted value of
- // the variable, and the trailing characters to get the new
- // value.
- val = val.substring(0, startDelim)
- + substValue
- + val.substring(stopDelim + DELIM_STOP.length(), val.length());
-
- // Now perform substitution again, since there could still
- // be substitutions to make.
- val = substVars(val, currentKey, cycleMap, configProps);
-
- // Return the value.
- return val;
- }
-
}
Modified: karaf/trunk/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg (original)
+++ karaf/trunk/admin/core/src/main/resources/org/apache/karaf/admin/etc/org.apache.karaf.management.cfg Thu Feb 24 14:28:52 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/trunk/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java (original)
+++ karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/InstanceSettingsTest.java Thu Feb 24 14:28:52 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/trunk/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java (original)
+++ karaf/trunk/admin/core/src/test/java/org/apache/karaf/admin/internal/AdminServiceImplTest.java Thu Feb 24 14:28:52 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/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java (original)
+++ karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java Thu Feb 24 14:28:52 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/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java (original)
+++ karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/codec/JmxInstance.java Thu Feb 24 14:28:52 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/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java (original)
+++ karaf/trunk/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java Thu Feb 24 14:28:52 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/trunk/admin/management/src/main/resources/OSGI-INF/bundle.info
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/management/src/main/resources/OSGI-INF/bundle.info?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/management/src/main/resources/OSGI-INF/bundle.info (original)
+++ karaf/trunk/admin/management/src/main/resources/OSGI-INF/bundle.info Thu Feb 24 14:28:52 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/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java (original)
+++ karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/codec/JmxInstanceTest.java Thu Feb 24 14:28:52 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/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java (original)
+++ karaf/trunk/admin/management/src/test/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImplTest.java Thu Feb 24 14:28:52 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/trunk/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java
URL: http://svn.apache.org/viewvc/karaf/trunk/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java (original)
+++ karaf/trunk/webconsole/admin/src/main/java/org/apache/karaf/webconsole/admin/AdminPlugin.java Thu Feb 24 14:28:52 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/trunk/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java?rev=1074161&r1=1074160&r2=1074161&view=diff
==============================================================================
--- karaf/trunk/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java (original)
+++ karaf/trunk/webconsole/admin/src/test/java/org/apache/karaf/webconsole/admin/AdminPluginTest.java Thu Feb 24 14:28:52 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);