Package org.apache.tomcat.util.net

# Class SocketProperties

java.lang.Object
org.apache.tomcat.util.net.SocketProperties

public class SocketProperties extends Object
Properties that can be set in the <Connector> element in server.xml. All properties are prefixed with "socket." and are currently only working for the Nio connector

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected int`
  `appReadBufSize`
  The application read buffer size in bytes.
  `protected int`
  `appWriteBufSize`
  The application write buffer size in bytes Default value is txBufSize
  `protected int`
  `bufferPool`
  NioChannel pool size for the endpoint, this value is how many channels -1 means unlimited cached, 0 means no cache Default value is 500 TODO: The default should be changed in Tomcat 10, actually it should be bufferPoolSize / (appReadBufSize + appWriteBufSize), assuming the SSL buffers are ignored (that would be logical), and the value would be 6400.
  `protected int`
  `bufferPoolSize`
  Buffer pool size in bytes to be cached -1 means unlimited, 0 means no cache Default value is 100MB (1024*1024*100 bytes) TODO: The default value to be used could rather be based on the JVM max heap, otherwise it could be a problem in some environments.
  `protected boolean`
  `directBuffer`
  Enable/disable direct buffers for the network buffers Default value is disabled
  `protected boolean`
  `directSslBuffer`
  Enable/disable direct buffers for the network buffers for SSL Default value is disabled
  `protected int`
  `eventCache`
  Enable/disable poller event cache, this bounded cache stores PollerEvent objects to reduce GC for the poller Default is 500 -1 is unlimited 0 is disabled >0 the max number of objects to keep in cache.
  `protected Boolean`
  `ooBInline`
  OOBINLINE option.
  `protected Integer`
  `performanceBandwidth`
  Performance preferences according to https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int) All three performance attributes must be set or the JVM defaults will be used.
  `protected Integer`
  `performanceConnectionTime`
  Performance preferences according to https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int) All three performance attributes must be set or the JVM defaults will be used.
  `protected Integer`
  `performanceLatency`
  Performance preferences according to https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int) All three performance attributes must be set or the JVM defaults will be used.
  `protected int`
  `processorCache`
  Enable/disable socket processor cache, this bounded cache stores SocketProcessor objects to reduce GC Default is 500 -1 is unlimited 0 is disabled TODO: The default will be changed to 0 in Tomcat 10
  `protected Integer`
  `rxBufSize`
  Socket receive buffer size in bytes (SO_RCVBUF).
  `protected Boolean`
  `soKeepAlive`
  SO_KEEPALIVE option.
  `protected Boolean`
  `soLingerOn`
  SO_LINGER option, paired with the `soLingerTime` value.
  `protected Integer`
  `soLingerTime`
  SO_LINGER option, paired with the `soLingerOn` value.
  `protected Boolean`
  `soReuseAddress`
  SO_REUSEADDR option.
  `protected Integer`
  `soTimeout`
  SO_TIMEOUT option. default is 20000.
  `protected Boolean`
  `tcpNoDelay`
  TCP_NO_DELAY option.
  `protected long`
  `timeoutInterval`
  The minimum frequency of the timeout interval to avoid excess load from the poller during high traffic
  `protected Integer`
  `txBufSize`
  Socket send buffer size in bytes (SO_SNDBUF).
  `protected int`
  `unlockTimeout`
  Timeout in milliseconds for an unlock to take place.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SocketProperties()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getAppReadBufSize()`
  `int`
  `getAppWriteBufSize()`
  `int`
  `getBufferPool()`
  `int`
  `getBufferPoolSize()`
  `boolean`
  `getDirectBuffer()`
  `int`
  `getDirectBufferPool()`
  `boolean`
  `getDirectSslBuffer()`
  `int`
  `getEventCache()`
  `boolean`
  `getOoBInline()`
  `int`
  `getPerformanceBandwidth()`
  `int`
  `getPerformanceConnectionTime()`
  `int`
  `getPerformanceLatency()`
  `int`
  `getProcessorCache()`
  `int`
  `getRxBufSize()`
  `boolean`
  `getSoKeepAlive()`
  `boolean`
  `getSoLingerOn()`
  `int`
  `getSoLingerTime()`
  `boolean`
  `getSoReuseAddress()`
  `int`
  `getSoTimeout()`
  `boolean`
  `getTcpNoDelay()`
  `long`
  `getTimeoutInterval()`
  `int`
  `getTxBufSize()`
  `int`
  `getUnlockTimeout()`
  `void`
  `setAppReadBufSize(int appReadBufSize)`
  `void`
  `setAppWriteBufSize(int appWriteBufSize)`
  `void`
  `setBufferPool(int bufferPool)`
  `void`
  `setBufferPoolSize(int bufferPoolSize)`
  `void`
  `setDirectBuffer(boolean directBuffer)`
  `void`
  `setDirectBufferPool(int directBufferPool)`
  `void`
  `setDirectSslBuffer(boolean directSslBuffer)`
  `void`
  `setEventCache(int eventCache)`
  `void`
  `setOoBInline(boolean ooBInline)`
  `void`
  `setPerformanceBandwidth(int performanceBandwidth)`
  `void`
  `setPerformanceConnectionTime(int performanceConnectionTime)`
  `void`
  `setPerformanceLatency(int performanceLatency)`
  `void`
  `setProcessorCache(int processorCache)`
  `void`
  `setProperties(ServerSocket socket)`
  `void`
  `setProperties(Socket socket)`
  `void`
  `setProperties(AsynchronousServerSocketChannel socket)`
  `void`
  `setProperties(AsynchronousSocketChannel socket)`
  `void`
  `setRxBufSize(int rxBufSize)`
  `void`
  `setSoKeepAlive(boolean soKeepAlive)`
  `void`
  `setSoLingerOn(boolean soLingerOn)`
  `void`
  `setSoLingerTime(int soLingerTime)`
  `void`
  `setSoReuseAddress(boolean soReuseAddress)`
  `void`
  `setSoTimeout(int soTimeout)`
  `void`
  `setTcpNoDelay(boolean tcpNoDelay)`
  `void`
  `setTimeoutInterval(long timeoutInterval)`
  `void`
  `setTxBufSize(int txBufSize)`
  `void`
  `setUnlockTimeout(int unlockTimeout)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### processorCache

    protected int processorCache
    Enable/disable socket processor cache, this bounded cache stores SocketProcessor objects to reduce GC Default is 500 -1 is unlimited 0 is disabled TODO: The default will be changed to 0 in Tomcat 10

  - ### eventCache

    protected int eventCache
    Enable/disable poller event cache, this bounded cache stores PollerEvent objects to reduce GC for the poller Default is 500 -1 is unlimited 0 is disabled >0 the max number of objects to keep in cache. TODO: The default will be changed to 0 in Tomcat 10

  - ### directBuffer

    protected boolean directBuffer
    Enable/disable direct buffers for the network buffers Default value is disabled

  - ### directSslBuffer

    protected boolean directSslBuffer
    Enable/disable direct buffers for the network buffers for SSL Default value is disabled

  - ### rxBufSize

    protected Integer rxBufSize
    Socket receive buffer size in bytes (SO_RCVBUF). JVM default used if not set.

  - ### txBufSize

    protected Integer txBufSize
    Socket send buffer size in bytes (SO_SNDBUF). JVM default used if not set.

  - ### appReadBufSize

    protected int appReadBufSize
    The application read buffer size in bytes. Default value is rxBufSize

  - ### appWriteBufSize

    protected int appWriteBufSize
    The application write buffer size in bytes Default value is txBufSize

  - ### bufferPool

    protected int bufferPool
    NioChannel pool size for the endpoint, this value is how many channels -1 means unlimited cached, 0 means no cache Default value is 500 TODO: The default should be changed in Tomcat 10, actually it should be bufferPoolSize / (appReadBufSize + appWriteBufSize), assuming the SSL buffers are ignored (that would be logical), and the value would be 6400. So the default value will be changed to a new default value like -2 to set a dynamic value based on bufferPoolSize in that case.

  - ### bufferPoolSize

    protected int bufferPoolSize
    Buffer pool size in bytes to be cached -1 means unlimited, 0 means no cache Default value is 100MB (1024*1024*100 bytes) TODO: The default value to be used could rather be based on the JVM max heap, otherwise it could be a problem in some environments. Big servers also need to use a much higher default, while small cloud based ones should use 0 instead. Possible default value strategy: heap inf 1GB: 0 heap sup 1GB: heap / 32

  - ### tcpNoDelay

    protected Boolean tcpNoDelay
    TCP_NO_DELAY option. JVM default used if not set.

  - ### soKeepAlive

    protected Boolean soKeepAlive
    SO_KEEPALIVE option. JVM default used if not set.

  - ### ooBInline

    protected Boolean ooBInline
    OOBINLINE option. JVM default used if not set.

  - ### soReuseAddress

    protected Boolean soReuseAddress
    SO_REUSEADDR option. JVM default used if not set.

  - ### soLingerOn

    protected Boolean soLingerOn
    SO_LINGER option, paired with the `soLingerTime` value. JVM defaults used unless both attributes are set.

  - ### soLingerTime

    protected Integer soLingerTime
    SO_LINGER option, paired with the `soLingerOn` value. JVM defaults used unless both attributes are set.

  - ### soTimeout

    protected Integer soTimeout
    SO_TIMEOUT option. default is 20000.

  - ### performanceConnectionTime

    protected Integer performanceConnectionTime
    Performance preferences according to https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int) All three performance attributes must be set or the JVM defaults will be used.

  - ### performanceLatency

    protected Integer performanceLatency
    Performance preferences according to https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int) All three performance attributes must be set or the JVM defaults will be used.

  - ### performanceBandwidth

    protected Integer performanceBandwidth
    Performance preferences according to https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int) All three performance attributes must be set or the JVM defaults will be used.

  - ### timeoutInterval

    protected long timeoutInterval
    The minimum frequency of the timeout interval to avoid excess load from the poller during high traffic

  - ### unlockTimeout

    protected int unlockTimeout
    Timeout in milliseconds for an unlock to take place.

- ## Constructor Details

  - ### SocketProperties

    public SocketProperties()

- ## Method Details

  - ### setProperties

    public void setProperties(Socket socket) throws SocketException
    Throws:
      `SocketException`

  - ### setProperties

    public void setProperties(ServerSocket socket) throws SocketException
    Throws:
      `SocketException`

  - ### setProperties

    public void setProperties(AsynchronousSocketChannel socket) throws IOException
    Throws:
      `IOException`

  - ### setProperties

    public void setProperties(AsynchronousServerSocketChannel socket) throws IOException
    Throws:
      `IOException`

  - ### getDirectBuffer

    public boolean getDirectBuffer()

  - ### getDirectSslBuffer

    public boolean getDirectSslBuffer()

  - ### getOoBInline

    public boolean getOoBInline()

  - ### getPerformanceBandwidth

    public int getPerformanceBandwidth()

  - ### getPerformanceConnectionTime

    public int getPerformanceConnectionTime()

  - ### getPerformanceLatency

    public int getPerformanceLatency()

  - ### getRxBufSize

    public int getRxBufSize()

  - ### getSoKeepAlive

    public boolean getSoKeepAlive()

  - ### getSoLingerOn

    public boolean getSoLingerOn()

  - ### getSoLingerTime

    public int getSoLingerTime()

  - ### getSoReuseAddress

    public boolean getSoReuseAddress()

  - ### getSoTimeout

    public int getSoTimeout()

  - ### getTcpNoDelay

    public boolean getTcpNoDelay()

  - ### getTxBufSize

    public int getTxBufSize()

  - ### getBufferPool

    public int getBufferPool()

  - ### getBufferPoolSize

    public int getBufferPoolSize()

  - ### getEventCache

    public int getEventCache()

  - ### getAppReadBufSize

    public int getAppReadBufSize()

  - ### getAppWriteBufSize

    public int getAppWriteBufSize()

  - ### getProcessorCache

    public int getProcessorCache()

  - ### getTimeoutInterval

    public long getTimeoutInterval()

  - ### getDirectBufferPool

    public int getDirectBufferPool()

  - ### setPerformanceConnectionTime

    public void setPerformanceConnectionTime(int performanceConnectionTime)

  - ### setTxBufSize

    public void setTxBufSize(int txBufSize)

  - ### setTcpNoDelay

    public void setTcpNoDelay(boolean tcpNoDelay)

  - ### setSoTimeout

    public void setSoTimeout(int soTimeout)

  - ### setSoReuseAddress

    public void setSoReuseAddress(boolean soReuseAddress)

  - ### setSoLingerTime

    public void setSoLingerTime(int soLingerTime)

  - ### setSoKeepAlive

    public void setSoKeepAlive(boolean soKeepAlive)

  - ### setRxBufSize

    public void setRxBufSize(int rxBufSize)

  - ### setPerformanceLatency

    public void setPerformanceLatency(int performanceLatency)

  - ### setPerformanceBandwidth

    public void setPerformanceBandwidth(int performanceBandwidth)

  - ### setOoBInline

    public void setOoBInline(boolean ooBInline)

  - ### setDirectBuffer

    public void setDirectBuffer(boolean directBuffer)

  - ### setDirectSslBuffer

    public void setDirectSslBuffer(boolean directSslBuffer)

  - ### setSoLingerOn

    public void setSoLingerOn(boolean soLingerOn)

  - ### setBufferPool

    public void setBufferPool(int bufferPool)

  - ### setBufferPoolSize

    public void setBufferPoolSize(int bufferPoolSize)

  - ### setEventCache

    public void setEventCache(int eventCache)

  - ### setAppReadBufSize

    public void setAppReadBufSize(int appReadBufSize)

  - ### setAppWriteBufSize

    public void setAppWriteBufSize(int appWriteBufSize)

  - ### setProcessorCache

    public void setProcessorCache(int processorCache)

  - ### setTimeoutInterval

    public void setTimeoutInterval(long timeoutInterval)

  - ### setDirectBufferPool

    public void setDirectBufferPool(int directBufferPool)

  - ### getUnlockTimeout

    public int getUnlockTimeout()

  - ### setUnlockTimeout

    public void setUnlockTimeout(int unlockTimeout)