You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2016/09/06 12:08:50 UTC
karaf git commit: [KARAF-4686] Cleaning
sun.rmi.transport.tcp.TCPEndpoint.localEndpoints cache
Repository: karaf
Updated Branches:
refs/heads/master e653836d7 -> a1ad5b8ed
[KARAF-4686] Cleaning sun.rmi.transport.tcp.TCPEndpoint.localEndpoints cache
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/a1ad5b8e
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a1ad5b8e
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a1ad5b8e
Branch: refs/heads/master
Commit: a1ad5b8ed3be978828c0b1ef35a0010e4ef32ce8
Parents: e653836
Author: Grzegorz Grzybek <gg...@redhat.com>
Authored: Wed Aug 31 17:49:30 2016 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Tue Sep 6 14:07:18 2016 +0200
----------------------------------------------------------------------
.../karaf/management/RmiRegistryFactory.java | 24 ++++++++++++++++++++
1 file changed, 24 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/a1ad5b8e/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java
----------------------------------------------------------------------
diff --git a/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java b/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java
index d5f284d..76139de 100644
--- a/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java
+++ b/management/server/src/main/java/org/apache/karaf/management/RmiRegistryFactory.java
@@ -19,6 +19,7 @@ package org.apache.karaf.management;
import org.osgi.framework.BundleContext;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.ServerSocket;
@@ -31,6 +32,8 @@ import java.rmi.server.RMIServerSocketFactory;
import java.rmi.server.RMISocketFactory;
import java.rmi.server.UnicastRemoteObject;
import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
import javax.net.ServerSocketFactory;
import javax.net.SocketFactory;
@@ -140,6 +143,27 @@ public class RmiRegistryFactory {
Registry reg = registry;
registry = null;
UnicastRemoteObject.unexportObject(reg, true);
+
+ // clear TCPEndpointCache
+ try {
+ Class<?> cls = getClass().getClassLoader().loadClass("sun.rmi.transport.tcp.TCPEndpoint");
+ Field localEndpointsField = cls.getDeclaredField("localEndpoints");
+ Field ssfField = cls.getDeclaredField("ssf");
+ localEndpointsField.setAccessible(true);
+ ssfField.setAccessible(true);
+ Object localEndpoints = localEndpointsField.get(null);
+ if (localEndpoints != null) {
+ Map<Object, Object> map = (Map<Object, Object>) localEndpoints;
+ for (Iterator<Object> it = map.keySet().iterator(); it.hasNext(); ) {
+ Object key = it.next();
+ Object ssf = ssfField.get(key);
+ if (ssf != null && ssf.getClass().getPackage().getName().equals("org.apache.karaf.management")) {
+ it.remove();
+ }
+ }
+ }
+ } catch (Exception ignored) {
+ }
}
}