Class NioConfig

java.lang.Object
org.summerboot.jexpress.boot.config.BootConfig
org.summerboot.jexpress.nio.server.NioConfig
All Implemented Interfaces:
JExpressConfig

public class NioConfig extends BootConfig
Author:
Changski Tie Zheng Zhang 张铁铮, 魏泽北, 杜旺财, 杜富贵
  • Field Details

    • cfg

      public static final NioConfig cfg
    • bindingAddresses

      @ConfigHeader(title="1. NIO Network Listeners", format="ip1:port1, ip2:port2, ..., ipN:portN", example="192.168.1.10:8311, 127.0.0.1:8311, 0.0.0.0:8311") @Config(key="nio.server.bindings", predefinedValue="0.0.0.0:8211, 0.0.0.0:8311", required=true) protected volatile List<InetSocketAddress> bindingAddresses
    • autoStart

      @Config(key="nio.server.autostart", defaultValue="true") protected volatile boolean autoStart
    • KEY_kmf_key

      @ConfigHeader(title="2. NIO Security") protected static final String KEY_kmf_key
      See Also:
    • KEY_kmf_StorePwdKey

      protected static final String KEY_kmf_StorePwdKey
      See Also:
    • KEY_kmf_AliasKey

      protected static final String KEY_kmf_AliasKey
      See Also:
    • KEY_kmf_AliasPwdKey

      protected static final String KEY_kmf_AliasPwdKey
      See Also:
    • kmf

      @Config(key="nio.server.ssl.KeyStore", StorePwdKey="nio.server.ssl.KeyStorePwd", AliasKey="nio.server.ssl.KeyAlias", AliasPwdKey="nio.server.ssl.KeyPwd", desc="Path to key store file. Use SSL/TLS when keystore is provided, otherwise use plain socket", callbackMethodName4Dump="generateTemplate_keystore") protected volatile KeyManagerFactory kmf
    • KEY_tmf_key

      protected static final String KEY_tmf_key
      See Also:
    • KEY_tmf_StorePwdKey

      protected static final String KEY_tmf_StorePwdKey
      See Also:
    • tmf

      @Config(key="nio.server.ssl.TrustStore", StorePwdKey="nio.server.ssl.TrustStorePwd", desc="Path to trust store file. Auth the remote peer certificate when a truststore is provided, otherwise blindly trust all remote peer certificate") protected volatile TrustManagerFactory tmf
    • verifyCertificateHost

      @Config(key="nio.server.ssl.VerifyCertificateHost", defaultValue="false") protected volatile boolean verifyCertificateHost
    • sslProvider

      @Config(key="nio.server.ssl.Provider", defaultValue="OPENSSL") protected volatile io.netty.handler.ssl.SslProvider sslProvider
    • sslProtocols

      @Config(key="nio.server.ssl.Protocols", defaultValue="TLSv1.2, TLSv1.3") protected String[] sslProtocols
    • sslCipherSuites

      @Config(key="nio.server.ssl.CipherSuites", desc="use system default ciphersuites when not specified") protected String[] sslCipherSuites
    • soReuseAddr

      @ConfigHeader(title="3.1 Socket controller") @Config(key="nio.server.socket.SO_REUSEADDR", defaultValue="true") protected volatile boolean soReuseAddr
    • soKeepAlive

      @Config(key="nio.server.socket.SO_KEEPALIVE", defaultValue="true") protected volatile boolean soKeepAlive
    • soTcpNodelay

      @Config(key="nio.server.socket.TCP_NODELAY", defaultValue="true") protected volatile boolean soTcpNodelay
    • soLinger

      @Config(key="nio.server.socket.SO_LINGER", defaultValue="-1") protected volatile int soLinger
    • sslHandshakeTimeoutSeconds

      @ConfigHeader(title="3.2 Socket Performance") @Config(key="nio.server.ssl.HandshakeTimeout.second", defaultValue="30") protected volatile int sslHandshakeTimeoutSeconds
    • soConnectionTimeoutSeconds

      @Config(key="nio.server.socket.CONNECT_TIMEOUT.second", defaultValue="30") protected volatile int soConnectionTimeoutSeconds
    • soBacklog

      @Config(key="nio.server.socket.SO_BACKLOG", defaultValue="1024") protected volatile int soBacklog
    • soRcvBuf

      @Config(key="nio.server.socket.SO_RCVBUF", defaultValue="1048576", desc=" - cat /proc/sys/net/ipv4/tcp_rmem (max 1024k)") protected volatile int soRcvBuf
    • soSndBuf

      @Config(key="nio.server.socket.SO_SNDBUF", defaultValue="1048576", desc=" - cat /proc/sys/net/ipv4/tcp_smem (max 1024k)") protected volatile int soSndBuf
    • httpObjectAggregatorMaxContentLength

      @Config(key="nio.server.HttpObjectAggregator.maxContentLength", defaultValue="65536", desc="default - 64kb") protected volatile int httpObjectAggregatorMaxContentLength
    • multiplexer

      @ConfigHeader(title="4.1 Netty controller") @Config(key="nio.server.multiplexer", defaultValue="AVAILABLE") protected volatile IoMultiplexer multiplexer
    • httpServerCodec_MaxInitialLineLength

      @Config(key="nio.server.httpServerCodec.MaxInitialLineLength", defaultValue="8192") protected volatile int httpServerCodec_MaxInitialLineLength
    • httpServerCodec_MaxHeaderSize

      @Config(key="nio.server.httpServerCodec.MaxHeaderSize", defaultValue="8192") protected volatile int httpServerCodec_MaxHeaderSize
    • httpServerCodec_MaxChunkSize

      @Config(key="nio.server.httpServerCodec.MaxChunkSize", defaultValue="8192") protected volatile int httpServerCodec_MaxChunkSize
    • nioEventLoopGroupAcceptorSize

      @ConfigHeader(title="4.2 Netty Performance - NIO and Biz Exector Pool") @Config(key="nio.server.EventLoopGroup.AcceptorSize", defaultValue="0", desc="AcceptorSize 0 = number of bindings") protected volatile int nioEventLoopGroupAcceptorSize
    • nioEventLoopGroupWorkerSize

      @Config(key="nio.server.EventLoopGroup.WorkerSize", predefinedValue="0", desc="WorkerSize 0 = current computer/VM\'s available processors x 2 + 1") protected volatile int nioEventLoopGroupWorkerSize
    • tpeThreadingMode

      @Config(key="nio.server.BizExecutor.mode", defaultValue="Mixed", desc="valid value = CPU, IO and Mixed (default) \nuse CPU core + 1 when application is CPU bound\nuse CPU core x 2 + 1 when application is I/O bound\nneed to find the best value based on your performance test result when nio.server.BizExecutor.mode=Mixed") protected volatile BootConfig.ThreadingMode tpeThreadingMode
    • tpeCore

      @Config(key="nio.server.BizExecutor.CoreSize", predefinedValue="0", desc="CoreSize 0 = current computer/VM\'s available processors x 2 + 1") protected volatile int tpeCore
    • tpeMax

      @Config(key="nio.server.BizExecutor.MaxSize", predefinedValue="0", desc="MaxSize 0 = current computer/VM\'s available processors x 2 + 1") protected volatile int tpeMax
    • tpeKeepAliveSeconds

      @Config(key="nio.server.BizExecutor.KeepAliveSec", defaultValue="60") protected volatile int tpeKeepAliveSeconds
    • tpeQueue

      @Config(key="nio.server.BizExecutor.QueueSize", defaultValue="2147483647", desc="The waiting list size when the pool is full") protected volatile int tpeQueue
    • prestartAllCoreThreads

      @Config(key="nio.server.BizExecutor.prestartAllCoreThreads", defaultValue="false") protected boolean prestartAllCoreThreads
    • allowCoreThreadTimeOut

      @Config(key="nio.server.BizExecutor.allowCoreThreadTimeOut", defaultValue="false") protected boolean allowCoreThreadTimeOut
    • tpe

      protected ThreadPoolExecutor tpe
    • bizTimeoutWarnThresholdMs

      @Config(key="nio.server.BizExecutor.bizTimeoutWarnThresholdMs", defaultValue="5000") protected volatile long bizTimeoutWarnThresholdMs
    • readerIdleSeconds

      @ConfigHeader(title="4.3 Netty Channel Handler") @Config(key="nio.server.ReaderIdleSeconds", defaultValue="0", desc="rec Idle enabled only when value > 0") protected volatile int readerIdleSeconds
    • writerIdleSeconds

      @Config(key="nio.server.WriterIdleSeconds", defaultValue="0", desc="Sent Idle enabled only when value > 0") protected volatile int writerIdleSeconds
    • healthInspectionIntervalSeconds

      @Config(key="nio.server.health.InspectionIntervalSeconds", defaultValue="5") protected volatile int healthInspectionIntervalSeconds
    • fromJsonCaseInsensitive

      @Config(key="nio.JAX-RS.fromJson.CaseInsensitive", defaultValue="false") protected volatile boolean fromJsonCaseInsensitive
    • fromJsonFailOnUnknownProperties

      @Config(key="nio.JAX-RS.fromJson.failOnUnknownProperties", defaultValue="true") protected volatile boolean fromJsonFailOnUnknownProperties
    • toJsonIgnoreNull

      @Config(key="nio.JAX-RS.toJson.IgnoreNull", defaultValue="true") protected volatile boolean toJsonIgnoreNull
    • toJsonPretty

      @Config(key="nio.JAX-RS.toJson.Pretty", defaultValue="false") protected volatile boolean toJsonPretty
    • jsonParserTimeZone

      @Config(key="nio.JAX-RS.jsonParser.TimeZone", desc="The ID for a TimeZone, either an abbreviation such as \"UTC\", a full name such as \"America/Toronto\", or a custom ID such as \"GMT-8:00\", or \"system\" as system default timezone.", defaultValue="system") protected TimeZone jsonParserTimeZone
    • webSocketCompress

      @Config(key="nio.WebSocket.Compress", defaultValue="true") protected volatile boolean webSocketCompress
    • webSocketAllowExtensions

      @Config(key="nio.WebSocket.AllowExtensions", defaultValue="true") protected volatile boolean webSocketAllowExtensions
    • webSocketMaxFrameSize

      @Config(key="nio.WebSocket.maxFrameSize", defaultValue="5242880") protected volatile int webSocketMaxFrameSize
    • webSocketAllowMaskMismatch

      @Config(key="nio.WebSocket.AllowMaskMismatch", defaultValue="false") protected volatile boolean webSocketAllowMaskMismatch
    • webSocketCheckStartsWith

      @Config(key="nio.WebSocket.CheckStartsWith", defaultValue="false") protected volatile boolean webSocketCheckStartsWith
    • webSocketDropPongFrames

      @Config(key="nio.WebSocket.DropPongFrames", defaultValue="true") protected volatile boolean webSocketDropPongFrames
    • webSocketHandshakeTimeoutMs

      @Config(key="nio.WebSocket.HandshakeTimeoutMs", defaultValue="10000") protected volatile long webSocketHandshakeTimeoutMs
    • filterUserType

      @ConfigHeader(title="5. IO Communication logging filter") @Config(key="nio.verbose.filter.usertype", defaultValue="ignore", desc="5.1 caller filter\nvalid value = id, uid, group, role, ignore") protected volatile NioConfig.VerboseTargetUserType filterUserType
    • KEY_FILTER_USERTYPE_RANGE

      protected static final String KEY_FILTER_USERTYPE_RANGE
      See Also:
    • filterUserVaue

      @Config(key="nio.verbose.filter.usertype.range", desc="user range (when type=CallerId): N1 - N2 or N1, N2, ... , Nn \nuser range (when type=CallerName): johndoe, janedoe") protected volatile String filterUserVaue
    • filterCallerNameSet

      protected volatile Set<String> filterCallerNameSet
    • filterCallerIdSet

      protected volatile Set<Long> filterCallerIdSet
    • filterCallerIdFrom

      protected volatile long filterCallerIdFrom
    • filterCallerIdTo

      protected volatile long filterCallerIdTo
    • filterCodeType

      @Config(key="nio.verbose.filter.codetype", defaultValue="all", desc="valid value = HttpStatusCode, AppErrorCode, all, ignore") protected volatile NioConfig.VerboseTargetCodeType filterCodeType
    • KEY_FILTER_CODETYPE_RANGE

      protected static final String KEY_FILTER_CODETYPE_RANGE
      See Also:
    • filterCodeVaue

      @Config(key="nio.verbose.filter.codetype.range", desc="5.2 error code filter\ncode range: N1 - N2 or N1, N2, ... , Nn") protected volatile String filterCodeVaue
    • filterCodeSet

      protected volatile Set<Long> filterCodeSet
    • filterCodeRangeFrom

      protected volatile long filterCodeRangeFrom
    • filterCodeRangeTo

      protected volatile long filterCodeRangeTo
    • verboseReqHeader

      @Config(key="nio.verbose.aspect.ReqHeader", defaultValue="true") protected volatile boolean verboseReqHeader
    • verboseReqContent

      @Config(key="nio.verbose.aspect.ReqContent", defaultValue="true") protected volatile boolean verboseReqContent
    • verboseRespHeader

      @Config(key="nio.verbose.aspect.RespHeader", defaultValue="true") protected volatile boolean verboseRespHeader
    • verboseRespContent

      @Config(key="nio.verbose.aspect.RespContent", defaultValue="true") protected volatile boolean verboseRespContent
    • filterPOIType

      @ConfigHeader(title="6. POI logging filter") @Config(key="nio.verbose.ServiceTimePOI.type", defaultValue="all", desc="valid value = filter, all, ignore") protected volatile NioConfig.VerboseTargetPOIType filterPOIType
    • filterPOISet

      @Config(key="nio.verbose.ServiceTimePOI.filter", defaultValue="auth.begin, auth.end, db.begin, db.end", desc="CSV format") protected volatile Set<String> filterPOISet
    • HEADER_SERVER_RESPONSE

      protected static final String HEADER_SERVER_RESPONSE
      See Also:
    • docroot

      @ConfigHeader(title="7. Web Server Mode") @Config(key="server.http.web.docroot", defaultValue="docroot") protected volatile String docroot
    • errorPageFolderName

      @Config(key="server.http.web.docroot.errorPageFolderName", defaultValue="errorpages") protected volatile String errorPageFolderName
    • welcomePage

      @Config(key="server.http.web.welcomePage", defaultValue="index.html") protected volatile String welcomePage
    • tempUoload

      @Config(key="server.http.web-server.tempupload", defaultValue="temp/upload") protected volatile String tempUoload
    • downloadMode

      protected volatile boolean downloadMode
    • rootFolder

      protected volatile File rootFolder
    • serverDefaultResponseHeaders

      @ConfigHeader(title="8. Default Server Response HTTP Headers", desc="put generic HTTP response headers here", format="server.DefaultResponseHttpHeaders.<response_header_name>=<response_header_value>", example="server.DefaultResponseHttpHeaders.Access-Control-Allow-Origin=https://www.summerboot.org\nserver.DefaultResponseHttpHeaders.Access-Control-Allow-Headers=X-Requested-With, Content-Type, Origin, Authorization\nserver.DefaultResponseHttpHeaders.Access-Control-Allow-Methods=PUT,GET,POST,DELETE,OPTIONS,PATCH\nserver.DefaultResponseHttpHeaders.Access-Control-Allow-Credentials=false\nserver.DefaultResponseHttpHeaders.Access-Control-Allow-Credentials=false\nserver.DefaultResponseHttpHeaders.Access-Control-Max-Age=3600\nserver.DefaultResponseHttpHeaders.Content-Security-Policy=default-src \'self\';script-src \'self\' www.google-analytics.com www.google.com www.gstatic. js.stripe.com ajax.cloudflare.com;style-src \'self\' \'unsafe-inline\' cdnjs.cloudflare.com;img-src \'self\' www.google-analytics.com stats.g.doubleclick.net www.gstatic.com;font-src \'self\' cdnjs.cloudflare.com fonts.gstatic.com;base-uri \'self\';child-src www.google.com js.stripe.com;form-action \'self\';frame-ancestors \'none\';report-uri=\"https://www.summerboot.org/report-uri\"\nserver.DefaultResponseHttpHeaders.X-XSS-Protection=1; mode=block\nserver.DefaultResponseHttpHeaders.Strict-Transport-Security=max-age=31536000;includeSubDomains;preload\nserver.DefaultResponseHttpHeaders.X-Frame-Options=sameorigin\nserver.DefaultResponseHttpHeaders.Expect-CT=max-age=86400, enforce, report-uri=\"https://www.summerboot.org/report-uri\"\nserver.DefaultResponseHttpHeaders.X-Content-Type-Options=nosniff\nserver.DefaultResponseHttpHeaders.Feature-Policy=autoplay \'none\';camera \'none\' ", callbackMethodName4Dump="generateTemplate_ResponseHeaders") protected io.netty.handler.codec.http.HttpHeaders serverDefaultResponseHeaders
    • docrootDir

      protected String docrootDir
    • tempUoloadDir

      protected String tempUoloadDir
  • Constructor Details

    • NioConfig

      protected NioConfig()
  • Method Details

    • main

      public static void main(String[] args)
    • shutdown

      public void shutdown()
    • generateTemplate_keystore

      protected void generateTemplate_keystore(StringBuilder sb)
    • generateTemplate_ResponseHeaders

      protected void generateTemplate_ResponseHeaders(StringBuilder sb)
    • getServerDefaultResponseHeaders

      public io.netty.handler.codec.http.HttpHeaders getServerDefaultResponseHeaders()
    • preLoad

      protected void preLoad(File cfgFile, boolean isReal, ConfigUtil helper, Properties props)
      Overrides:
      preLoad in class BootConfig
    • loadCustomizedConfigs

      protected void loadCustomizedConfigs(File cfgFile, boolean isReal, ConfigUtil helper, Properties props) throws Exception
      Specified by:
      loadCustomizedConfigs in class BootConfig
      Throws:
      Exception
    • getBizExecutor

      public ThreadPoolExecutor getBizExecutor()
    • isWebSocketCompress

      public boolean isWebSocketCompress()
    • isWebSocketAllowExtensions

      public boolean isWebSocketAllowExtensions()
    • getWebSocketMaxFrameSize

      public int getWebSocketMaxFrameSize()
    • isWebSocketAllowMaskMismatch

      public boolean isWebSocketAllowMaskMismatch()
    • isWebSocketCheckStartsWith

      public boolean isWebSocketCheckStartsWith()
    • isWebSocketDropPongFrames

      public boolean isWebSocketDropPongFrames()
    • getWebSocketHandshakeTimeoutMs

      public long getWebSocketHandshakeTimeoutMs()
    • getBindingAddresses

      public List<InetSocketAddress> getBindingAddresses()
    • isAutoStart

      public boolean isAutoStart()
    • getKmf

      public KeyManagerFactory getKmf()
    • getTmf

      public TrustManagerFactory getTmf()
    • isVerifyCertificateHost

      public boolean isVerifyCertificateHost()
    • getSslProvider

      public io.netty.handler.ssl.SslProvider getSslProvider()
    • getSslProtocols

      public String[] getSslProtocols()
    • getSslCipherSuites

      public String[] getSslCipherSuites()
    • isSoReuseAddr

      public boolean isSoReuseAddr()
    • isSoKeepAlive

      public boolean isSoKeepAlive()
    • isSoTcpNodelay

      public boolean isSoTcpNodelay()
    • getSoLinger

      public int getSoLinger()
    • getSslHandshakeTimeoutSeconds

      public int getSslHandshakeTimeoutSeconds()
    • getSoConnectionTimeoutSeconds

      public int getSoConnectionTimeoutSeconds()
    • getSoBacklog

      public int getSoBacklog()
    • getSoRcvBuf

      public int getSoRcvBuf()
    • getSoSndBuf

      public int getSoSndBuf()
    • getHttpObjectAggregatorMaxContentLength

      public int getHttpObjectAggregatorMaxContentLength()
    • getMultiplexer

      public IoMultiplexer getMultiplexer()
    • getHttpServerCodec_MaxInitialLineLength

      public int getHttpServerCodec_MaxInitialLineLength()
    • getHttpServerCodec_MaxHeaderSize

      public int getHttpServerCodec_MaxHeaderSize()
    • getHttpServerCodec_MaxChunkSize

      public int getHttpServerCodec_MaxChunkSize()
    • getNioEventLoopGroupAcceptorSize

      public int getNioEventLoopGroupAcceptorSize()
    • getNioEventLoopGroupWorkerSize

      public int getNioEventLoopGroupWorkerSize()
    • getTpeThreadingMode

      public BootConfig.ThreadingMode getTpeThreadingMode()
    • getTpeCore

      public int getTpeCore()
    • getTpeMax

      public int getTpeMax()
    • getTpeQueue

      public int getTpeQueue()
    • getBizTimeoutWarnThresholdMs

      public long getBizTimeoutWarnThresholdMs()
    • getReaderIdleSeconds

      public int getReaderIdleSeconds()
    • getWriterIdleSeconds

      public int getWriterIdleSeconds()
    • getHealthInspectionIntervalSeconds

      public int getHealthInspectionIntervalSeconds()
    • isFromJsonCaseInsensitive

      public boolean isFromJsonCaseInsensitive()
    • isFromJsonFailOnUnknownProperties

      public boolean isFromJsonFailOnUnknownProperties()
    • getJsonParserTimeZone

      public TimeZone getJsonParserTimeZone()
    • isToJsonIgnoreNull

      public boolean isToJsonIgnoreNull()
    • isToJsonPretty

      public boolean isToJsonPretty()
    • getFilterUserType

      public NioConfig.VerboseTargetUserType getFilterUserType()
    • getFilterCallerNameSet

      public Set<String> getFilterCallerNameSet()
    • getFilterCallerIdSet

      public Set<Long> getFilterCallerIdSet()
    • getFilterCallerIdFrom

      public long getFilterCallerIdFrom()
    • getFilterCallerIdTo

      public long getFilterCallerIdTo()
    • getFilterCodeType

      public NioConfig.VerboseTargetCodeType getFilterCodeType()
    • getFilterCodeSet

      public Set<Long> getFilterCodeSet()
    • getFilterCodeRangeFrom

      public long getFilterCodeRangeFrom()
    • getFilterCodeRangeTo

      public long getFilterCodeRangeTo()
    • isVerboseReqHeader

      public boolean isVerboseReqHeader()
    • isVerboseReqContent

      public boolean isVerboseReqContent()
    • isVerboseRespHeader

      public boolean isVerboseRespHeader()
    • isVerboseRespContent

      public boolean isVerboseRespContent()
    • getFilterPOIType

      public NioConfig.VerboseTargetPOIType getFilterPOIType()
    • getFilterPOISet

      public Set<String> getFilterPOISet()
    • getRootFolder

      public File getRootFolder()
    • getDocrootDir

      public String getDocrootDir()
    • getErrorPageFolderName

      public String getErrorPageFolderName()
    • getWelcomePage

      public String getWelcomePage()
    • isDownloadMode

      public boolean isDownloadMode()
    • getTempUoloadDir

      public String getTempUoloadDir()