Class NioConfig
java.lang.Object
org.summerboot.jexpress.boot.config.BootConfig
org.summerboot.jexpress.nio.server.NioConfig
- All Implemented Interfaces:
JExpressConfig
- Author:
- Changski Tie Zheng Zhang 张铁铮, 魏泽北, 杜旺财, 杜富贵
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumstatic enumstatic enumNested classes/interfaces inherited from class org.summerboot.jexpress.boot.config.BootConfig
BootConfig.ThreadingMode -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected booleanprotected List<InetSocketAddress>protected longstatic final NioConfigprotected Stringprotected Stringprotected booleanprotected Stringprotected longprotected longprotected longprotected longprotected NioConfig.VerboseTargetCodeTypeprotected Stringprotected NioConfig.VerboseTargetPOITypeprotected NioConfig.VerboseTargetUserTypeprotected Stringprotected booleanprotected booleanprotected static final Stringprotected intprotected intprotected intprotected intprotected intprotected TimeZoneprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected KeyManagerFactoryprotected IoMultiplexerprotected intprotected intprotected booleanprotected intprotected Fileprotected io.netty.handler.codec.http.HttpHeadersprotected intprotected intprotected booleanprotected intprotected intprotected booleanprotected intprotected booleanprotected String[]protected intprotected String[]protected io.netty.handler.ssl.SslProviderprotected Stringprotected Stringprotected TrustManagerFactoryprotected booleanprotected booleanprotected ThreadPoolExecutorprotected intprotected intprotected intprotected intprotected BootConfig.ThreadingModeprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected longprotected intprotected Stringprotected intFields inherited from class org.summerboot.jexpress.boot.config.BootConfig
BR, cache, cfgFile, configName, CPU_CORE, DESC_KMF, DESC_PLAINPWD, DESC_TMF, FILENAME_KEYSTORE, FILENAME_SRC_TRUSTSTORE, generateTemplate, logger, props -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected voidlonglonglonglonglongintintintintintgetKmf()intintintio.netty.handler.codec.http.HttpHeadersintintintintintString[]intString[]io.netty.handler.ssl.SslProvidergetTmf()intintintlongintintbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanprotected voidloadCustomizedConfigs(File cfgFile, boolean isReal, ConfigUtil helper, Properties props) static voidprotected voidpreLoad(File cfgFile, boolean isReal, ConfigUtil helper, Properties props) voidshutdown()Methods inherited from class org.summerboot.jexpress.boot.config.BootConfig
buildThreadPoolExecutor, createIfNotExist, generateTemplate, getCfgFile, getLength, getProperties, info, instance, lineBreak, load, loadField, name, parse, registerSingleton, temp, updateConfigFile, updateFilePath
-
Field Details
-
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
-
KEY_kmf_key
- See Also:
-
KEY_kmf_StorePwdKey
- See Also:
-
KEY_kmf_AliasKey
- See Also:
-
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
- See Also:
-
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
-
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
-
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
-
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
-
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
- See Also:
-
filterUserVaue
-
filterCallerNameSet
-
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
- See Also:
-
filterCodeVaue
-
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
-
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
-
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
-
tempUoloadDir
-
-
Constructor Details
-
NioConfig
protected NioConfig()
-
-
Method Details
-
main
-
shutdown
public void shutdown() -
generateTemplate_keystore
-
generateTemplate_ResponseHeaders
-
getServerDefaultResponseHeaders
public io.netty.handler.codec.http.HttpHeaders getServerDefaultResponseHeaders() -
preLoad
- Overrides:
preLoadin classBootConfig
-
loadCustomizedConfigs
protected void loadCustomizedConfigs(File cfgFile, boolean isReal, ConfigUtil helper, Properties props) throws Exception - Specified by:
loadCustomizedConfigsin classBootConfig- Throws:
Exception
-
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
-
isAutoStart
public boolean isAutoStart() -
getKmf
-
getTmf
-
isVerifyCertificateHost
public boolean isVerifyCertificateHost() -
getSslProvider
public io.netty.handler.ssl.SslProvider getSslProvider() -
getSslProtocols
-
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
-
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
-
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
-
isToJsonIgnoreNull
public boolean isToJsonIgnoreNull() -
isToJsonPretty
public boolean isToJsonPretty() -
getFilterUserType
-
getFilterCallerNameSet
-
getFilterCallerIdSet
-
getFilterCallerIdFrom
public long getFilterCallerIdFrom() -
getFilterCallerIdTo
public long getFilterCallerIdTo() -
getFilterCodeType
-
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
-
getFilterPOISet
-
getRootFolder
-
getDocrootDir
-
getErrorPageFolderName
-
getWelcomePage
-
isDownloadMode
public boolean isDownloadMode() -
getTempUoloadDir
-