jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java
changeset 23333 b0af2c7c8c91
parent 23010 6dadb192ad81
equal deleted inserted replaced
23332:c36c4773fe96 23333:b0af2c7c8c91
    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();