36 import java.rmi.RemoteException; |
36 import java.rmi.RemoteException; |
37 import java.rmi.server.RMIClientSocketFactory; |
37 import java.rmi.server.RMIClientSocketFactory; |
38 import java.rmi.server.RMIServerSocketFactory; |
38 import java.rmi.server.RMIServerSocketFactory; |
39 import java.rmi.server.RMISocketFactory; |
39 import java.rmi.server.RMISocketFactory; |
40 import java.security.AccessController; |
40 import java.security.AccessController; |
|
41 import java.security.PrivilegedAction; |
41 import java.util.Collection; |
42 import java.util.Collection; |
42 import java.util.HashMap; |
43 import java.util.HashMap; |
43 import java.util.HashSet; |
44 import java.util.HashSet; |
44 import java.util.LinkedList; |
45 import java.util.LinkedList; |
45 import java.util.Map; |
46 import java.util.Map; |
48 import sun.rmi.runtime.NewThreadAction; |
49 import sun.rmi.runtime.NewThreadAction; |
49 import sun.rmi.transport.Channel; |
50 import sun.rmi.transport.Channel; |
50 import sun.rmi.transport.Endpoint; |
51 import sun.rmi.transport.Endpoint; |
51 import sun.rmi.transport.Target; |
52 import sun.rmi.transport.Target; |
52 import sun.rmi.transport.Transport; |
53 import sun.rmi.transport.Transport; |
53 import sun.security.action.GetBooleanAction; |
|
54 import sun.security.action.GetIntegerAction; |
|
55 import sun.security.action.GetPropertyAction; |
|
56 |
54 |
57 /** |
55 /** |
58 * TCPEndpoint represents some communication endpoint for an address |
56 * TCPEndpoint represents some communication endpoint for an address |
59 * space (VM). |
57 * space (VM). |
60 * |
58 * |
80 /** true if real local host name is known yet */ |
78 /** true if real local host name is known yet */ |
81 private static boolean localHostKnown; |
79 private static boolean localHostKnown; |
82 |
80 |
83 // this should be a *private* method since it is privileged |
81 // this should be a *private* method since it is privileged |
84 private static int getInt(String name, int def) { |
82 private static int getInt(String name, int def) { |
85 return AccessController.doPrivileged(new GetIntegerAction(name, def)); |
83 return AccessController.doPrivileged( |
|
84 (PrivilegedAction<Integer>) () -> Integer.getInteger(name, def)); |
86 } |
85 } |
87 |
86 |
88 // this should be a *private* method since it is privileged |
87 // this should be a *private* method since it is privileged |
89 private static boolean getBoolean(String name) { |
88 private static boolean getBoolean(String name) { |
90 return AccessController.doPrivileged(new GetBooleanAction(name)); |
89 return AccessController.doPrivileged( |
|
90 (PrivilegedAction<Boolean>) () -> Boolean.getBoolean(name)); |
91 } |
91 } |
92 |
92 |
93 /** |
93 /** |
94 * Returns the value of the java.rmi.server.hostname property. |
94 * Returns the value of the java.rmi.server.hostname property. |
95 */ |
95 */ |
96 private static String getHostnameProperty() { |
96 private static String getHostnameProperty() { |
97 return AccessController.doPrivileged( |
97 return AccessController.doPrivileged( |
98 new GetPropertyAction("java.rmi.server.hostname")); |
98 (PrivilegedAction<String>) () -> System.getProperty("java.rmi.server.hostname")); |
99 } |
99 } |
100 |
100 |
101 /** |
101 /** |
102 * Find host name of local machine. Property "java.rmi.server.hostname" |
102 * Find host name of local machine. Property "java.rmi.server.hostname" |
103 * is used if set, so server administrator can compensate for the possible |
103 * is used if set, so server administrator can compensate for the possible |