You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by dj...@apache.org on 2011/12/28 07:50:05 UTC
svn commit: r1225115 - in /karaf/trunk/management/server/src/main:
java/org/apache/karaf/management/ resources/OSGI-INF/blueprint/
resources/OSGI-INF/metatype/
Author: djencks
Date: Wed Dec 28 06:50:05 2011
New Revision: 1225115
URL: http://svn.apache.org/viewvc?rev=1225115&view=rev
Log:
KARAF-1129 allow optionally configuring rmi Registry host
Modified:
karaf/trunk/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java
karaf/trunk/management/server/src/main/resources/OSGI-INF/blueprint/karaf-management.xml
karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.properties
karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.xml
Modified: karaf/trunk/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java
URL: http://svn.apache.org/viewvc/karaf/trunk/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java?rev=1225115&r1=1225114&r2=1225115&view=diff
==============================================================================
--- karaf/trunk/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java (original)
+++ karaf/trunk/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java Wed Dec 28 06:50:05 2011
@@ -18,15 +18,27 @@ package org.apache.karaf.management;
import org.osgi.framework.BundleContext;
+import java.io.IOException;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.UnknownHostException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.RMISocketFactory;
import java.rmi.server.UnicastRemoteObject;
import java.util.Hashtable;
+import javax.net.ServerSocketFactory;
+import javax.net.SocketFactory;
+
public class RmiRegistryFactory {
private int port = Registry.REGISTRY_PORT;
+ private String host;
private Registry registry;
private boolean locate;
private boolean create = true;
@@ -76,6 +88,14 @@ public class RmiRegistryFactory {
this.port = port;
}
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
public Object getObject() throws Exception {
return registry;
}
@@ -84,10 +104,10 @@ public class RmiRegistryFactory {
this.bundleContext = bundleContext;
}
- public void init() throws RemoteException {
+ public void init() throws RemoteException, UnknownHostException {
if (registry == null && locate) {
try {
- Registry reg = LocateRegistry.getRegistry(getPort());
+ Registry reg = LocateRegistry.getRegistry(host, getPort());
reg.list();
registry = reg;
} catch (RemoteException e) {
@@ -95,13 +115,22 @@ public class RmiRegistryFactory {
}
}
if (registry == null && create) {
- registry = LocateRegistry.createRegistry(getPort());
+ if (host != null && !host.isEmpty()) {
+ RMIClientSocketFactory socketFactory = RMISocketFactory.getDefaultSocketFactory();
+ InetAddress addr = InetAddress.getByName(host);
+ RMIServerSocketFactory serverSocketFactory = new KarafServerSocketFactory(addr, port);
+
+ registry = LocateRegistry.createRegistry(getPort(), socketFactory, serverSocketFactory);
+ } else {
+ registry = LocateRegistry.createRegistry(getPort());
+ }
locallyCreated = true;
}
if (registry != null) {
// register the registry as an OSGi service
Hashtable<String, Object> props = new Hashtable<String, Object>();
props.put("port", getPort());
+ props.put("host", getHost());
bundleContext.registerService(Registry.class, registry, props);
}
}
@@ -114,4 +143,19 @@ public class RmiRegistryFactory {
}
}
+ private static class KarafServerSocketFactory implements RMIServerSocketFactory {
+ private final int port;
+ private final InetAddress addr;
+
+ private KarafServerSocketFactory(InetAddress addr, int port) {
+ this.addr = addr;
+ this.port = port;
+ }
+
+ @Override
+ public ServerSocket createServerSocket(int i) throws IOException {
+ return new ServerSocket(port, 0, addr);
+ }
+ }
+
}
Modified: karaf/trunk/management/server/src/main/resources/OSGI-INF/blueprint/karaf-management.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/management/server/src/main/resources/OSGI-INF/blueprint/karaf-management.xml?rev=1225115&r1=1225114&r2=1225115&view=diff
==============================================================================
--- karaf/trunk/management/server/src/main/resources/OSGI-INF/blueprint/karaf-management.xml (original)
+++ karaf/trunk/management/server/src/main/resources/OSGI-INF/blueprint/karaf-management.xml Wed Dec 28 06:50:05 2011
@@ -32,6 +32,7 @@
<!-- Property place holder -->
<cm:property-placeholder persistent-id="org.apache.karaf.management" update-strategy="reload">
<cm:default-properties>
+ <cm:property name="rmiRegistryHost" value=""/>
<cm:property name="rmiRegistryPort" value="1099"/>
<cm:property name="rmiServerPort" value="44444"/>
<cm:property name="jmxRealm" value="karaf"/>
@@ -68,6 +69,7 @@
destroy-method="destroy">
<property name="create" value="true"/>
<property name="locate" value="true"/>
+ <property name="host" value="${rmiRegistryHost}"/>
<property name="port" value="${rmiRegistryPort}"/>
<property name="bundleContext" ref="blueprintBundleContext"/>
</bean>
Modified: karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1225115&r1=1225114&r2=1225115&view=diff
==============================================================================
--- karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.properties Wed Dec 28 06:50:05 2011
@@ -24,6 +24,9 @@
management.name = Apache Karaf JMX Management
management.description = Configuration of Apache Karaf JMX Management
+rmiRegistryHost.name = RMI Registry Host
+rmiRegistryHost.description = host of the registry for the exported RMI service. Blank for all interfaces
+
rmiRegistryPort.name = RMI Registry Port
rmiRegistryPort.description = port of the registry for the exported RMI service
Modified: karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.xml?rev=1225115&r1=1225114&r2=1225115&view=diff
==============================================================================
--- karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.xml (original)
+++ karaf/trunk/management/server/src/main/resources/OSGI-INF/metatype/metatype.xml Wed Dec 28 06:50:05 2011
@@ -19,6 +19,8 @@
-->
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0" localization="OSGI-INF/metatype/metatype">
<OCD id="org.apache.karaf.management" name="%management.name" description="%management.description">
+ <AD id="rmiRegistryHost" type="String" default="" name="%rmiRegistryHost.name"
+ description="%rmiRegistryHost.description"/>
<AD id="rmiRegistryPort" type="Integer" default="1099" name="%rmiRegistryPort.name"
description="%rmiRegistryPort.description"/>
<AD id="rmiServerPort" type="Integer" default="44444" name="%rmiServerPort.name"