32 import java.net.Socket; |
32 import java.net.Socket; |
33 import java.rmi.ConnectIOException; |
33 import java.rmi.ConnectIOException; |
34 import java.rmi.RemoteException; |
34 import java.rmi.RemoteException; |
35 import java.security.AccessControlContext; |
35 import java.security.AccessControlContext; |
36 import java.security.AccessController; |
36 import java.security.AccessController; |
|
37 import java.security.PrivilegedAction; |
37 import java.util.ArrayList; |
38 import java.util.ArrayList; |
38 import java.util.List; |
39 import java.util.List; |
39 import java.util.ListIterator; |
40 import java.util.ListIterator; |
40 import java.util.WeakHashMap; |
41 import java.util.WeakHashMap; |
41 import java.util.concurrent.Future; |
42 import java.util.concurrent.Future; |
46 import sun.rmi.runtime.RuntimeUtil; |
47 import sun.rmi.runtime.RuntimeUtil; |
47 import sun.rmi.transport.Channel; |
48 import sun.rmi.transport.Channel; |
48 import sun.rmi.transport.Connection; |
49 import sun.rmi.transport.Connection; |
49 import sun.rmi.transport.Endpoint; |
50 import sun.rmi.transport.Endpoint; |
50 import sun.rmi.transport.TransportConstants; |
51 import sun.rmi.transport.TransportConstants; |
51 import sun.security.action.GetIntegerAction; |
|
52 import sun.security.action.GetLongAction; |
|
53 |
52 |
54 /** |
53 /** |
55 * TCPChannel is the socket-based implementation of the RMI Channel |
54 * TCPChannel is the socket-based implementation of the RMI Channel |
56 * abstraction. |
55 * abstraction. |
57 * |
56 * |
85 /** the SecurityManager which authorized okContext and authcache */ |
84 /** the SecurityManager which authorized okContext and authcache */ |
86 private SecurityManager cacheSecurityManager = null; |
85 private SecurityManager cacheSecurityManager = null; |
87 |
86 |
88 /** client-side connection idle usage timeout */ |
87 /** client-side connection idle usage timeout */ |
89 private static final long idleTimeout = // default 15 seconds |
88 private static final long idleTimeout = // default 15 seconds |
90 AccessController.doPrivileged( |
89 AccessController.doPrivileged((PrivilegedAction<Long>) () -> |
91 new GetLongAction("sun.rmi.transport.connectionTimeout", 15000)); |
90 Long.getLong("sun.rmi.transport.connectionTimeout", 15000)); |
92 |
91 |
93 /** client-side connection handshake read timeout */ |
92 /** client-side connection handshake read timeout */ |
94 private static final int handshakeTimeout = // default 1 minute |
93 private static final int handshakeTimeout = // default 1 minute |
95 AccessController.doPrivileged( |
94 AccessController.doPrivileged((PrivilegedAction<Integer>) () -> |
96 new GetIntegerAction("sun.rmi.transport.tcp.handshakeTimeout", |
95 Integer.getInteger("sun.rmi.transport.tcp.handshakeTimeout", 60000)); |
97 60000)); |
|
98 |
96 |
99 /** client-side connection response read timeout (after handshake) */ |
97 /** client-side connection response read timeout (after handshake) */ |
100 private static final int responseTimeout = // default infinity |
98 private static final int responseTimeout = // default infinity |
101 AccessController.doPrivileged( |
99 AccessController.doPrivileged((PrivilegedAction<Integer>) () -> |
102 new GetIntegerAction("sun.rmi.transport.tcp.responseTimeout", 0)); |
100 Integer.getInteger("sun.rmi.transport.tcp.responseTimeout", 0)); |
103 |
101 |
104 /** thread pool for scheduling delayed tasks */ |
102 /** thread pool for scheduling delayed tasks */ |
105 private static final ScheduledExecutorService scheduler = |
103 private static final ScheduledExecutorService scheduler = |
106 AccessController.doPrivileged( |
104 AccessController.doPrivileged( |
107 new RuntimeUtil.GetInstanceAction()).getScheduler(); |
105 new RuntimeUtil.GetInstanceAction()).getScheduler(); |