public interface ServerConfig extends ConfigData
This object represents the basic information needed to bootstrap the server (e.g. getPort()
),
but also provides access to any externalised config objects to be used by the application via ConfigData.get(String, Class)
(see also: getRequiredConfig()
).
A server config object is-a ConfigData
object.
Server config objects are programmatically built via a ServerConfigBuilder
, which can be obtained via the static methods builder()
} and embedded()
.
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_MAX_CHUNK_SIZE
The default maximum chunk size to use when reading request/response bodies.
|
static int |
DEFAULT_MAX_CONTENT_LENGTH
The default max content length.
|
static int |
DEFAULT_MAX_HEADER_SIZE
The default maximum header size to use when reading requests.
|
static int |
DEFAULT_MAX_INITIAL_LINE_LENGTH
The default maximum initial line length to use when reading requests.
|
static int |
DEFAULT_PORT
The default port for Ratpack applications, 5050.
|
static int |
DEFAULT_THREADS
The default number of threads an application should use.
|
static TypeToken<ServerConfig> |
TYPE
A type token for this type.
|
Modifier and Type | Method and Description |
---|---|
static ServerConfigBuilder |
builder() |
static ServerConfigBuilder |
embedded()
Creates a builder configured for development mode and an ephemeral port.
|
java.net.InetAddress |
getAddress()
The address of the interface that the application should bind to.
|
FileSystemBinding |
getBaseDir()
The base dir of the application, which is also the initial
FileSystemBinding . |
java.util.Optional<java.lang.Integer> |
getConnectQueueSize()
The maximum amount of connections that may be waiting to be accepted at any time.
|
java.util.Optional<java.lang.Integer> |
getConnectTimeoutMillis()
The connect timeout of the channel.
|
java.time.Duration |
getIdleTimeout()
The default amount of time to allow a connection to remain open without any traffic.
|
int |
getMaxChunkSize()
The maximum chunk size to use when reading request (server) or response (client) bodies.
|
int |
getMaxContentLength()
The max content length to use for the HttpObjectAggregator.
|
int |
getMaxHeaderSize()
The maximum size of all headers allowed for reading http requests.
|
int |
getMaxInitialLineLength()
The maximum initial line length allowed for reading http requests.
|
java.util.Optional<java.lang.Integer> |
getMaxMessagesPerRead()
The maximum number of messages to read per read loop.
|
SslContext |
getNettySslContext()
The SSL context to use if the application will serve content over HTTPS.
|
int |
getPort()
The port that the application should listen to requests on.
|
java.net.URI |
getPublicAddress()
The public address of the site used for redirects.
|
java.util.Optional<java.lang.Integer> |
getReceiveBufferSize()
The StandardSocketOptions.SO_RCVBUF option.
|
ImmutableSet<ConfigObject<?>> |
getRequiredConfig()
The config objects that were declared as required when this server config was built.
|
javax.net.ssl.SSLContext |
getSslContext()
Deprecated.
since 1.5, prefer
getNettySslContext() |
int |
getThreads()
The number of threads for handling application requests.
|
java.util.Optional<java.lang.Integer> |
getWriteSpinCount()
The maximum loop count for a write operation until WritableByteChannel.write(ByteBuffer) returns a non-zero value.
|
boolean |
isDevelopment()
Whether or not the server is in "development" mode.
|
boolean |
isHasBaseDir()
Whether or not the base dir of the application has been set.
|
boolean |
isRequireClientSslAuth()
Deprecated.
since 1.5, replaced by
getNettySslContext() |
static ServerConfig |
of(Action<? super ServerConfigBuilder> action) |
builder, get, get, getAsConfigObject, getAsConfigObject, getRootNode, of, of
static final TypeToken<ServerConfig> TYPE
static final int DEFAULT_PORT
static final int DEFAULT_MAX_CONTENT_LENGTH
static final int DEFAULT_THREADS
Runtime.getRuntime().availableProcessors() * 2
.static final int DEFAULT_MAX_CHUNK_SIZE
Defaults to 8192.
getMaxChunkSize()
,
Constant Field Valuesstatic final int DEFAULT_MAX_INITIAL_LINE_LENGTH
Defaults to 4096
getMaxInitialLineLength()
,
Constant Field Valuesstatic final int DEFAULT_MAX_HEADER_SIZE
Defaults to 8192
getMaxHeaderSize()
,
Constant Field Valuesstatic ServerConfigBuilder embedded()
static ServerConfigBuilder builder()
builder
in interface ConfigData
static ServerConfig of(Action<? super ServerConfigBuilder> action) throws java.lang.Exception
java.lang.Exception
int getPort()
Defaults to 5050.
@Nullable java.net.InetAddress getAddress()
A value of null causes all interfaces to be bound. Defaults to null.
ImmutableSet<ConfigObject<?>> getRequiredConfig()
Required config is declared via the ServerConfigBuilder.require(String, Class)
when building.
All required config is made part of the base registry (which the server registry joins with),
which automatically makes the config objects available to the server registry.
ServerConfigBuilder.require(String, Class)
boolean isDevelopment()
A flag for indicating to Ratpack internals that the app is under development; diagnostics and reloading are more important than performance and security.
In development mode Ratpack will leak internal information through diagnostics and stacktraces by sending them to the response.
true
if the server is in "development" modeint getThreads()
If the value is greater than 0, a thread pool (of this size) will be created for servicing requests and doing computation.
If the value is 0 (default) or less, a thread pool of size Runtime.availableProcessors()
* 2
will be used.
This effectively sizes the ExecController.getExecutor()
thread pool size.
java.net.URI getPublicAddress()
@Nullable @Deprecated javax.net.ssl.SSLContext getSslContext()
getNettySslContext()
If the SSL context was configured with ServerConfigBuilder.ssl(SslContext)
,
this method will throw UnsupportedOperationException
.
null
if the application does not use SSL.SslContext getNettySslContext()
null
if the application does not use SSL.@Deprecated boolean isRequireClientSslAuth()
getNettySslContext()
SSLEngine.setNeedClientAuth(boolean)
.int getMaxContentLength()
java.util.Optional<java.lang.Integer> getConnectTimeoutMillis()
java.util.Optional<java.lang.Integer> getMaxMessagesPerRead()
If this value is greater than 1, an event loop might attempt to read multiple times to procure multiple messages.
java.util.Optional<java.lang.Integer> getReceiveBufferSize()
java.util.Optional<java.lang.Integer> getConnectQueueSize()
This is effectively the SO_BACKLOG
standard socket parameter.
If the queue is full (i.e. there are too many pending connections), connection attempts will be rejected.
Established connections are not part of this queue so do not contribute towards the limit.
The default value is platform specific, but usually either 200 or 128. Most application do not need to change this default.
java.util.Optional<java.lang.Integer> getWriteSpinCount()
It is similar to what a spin lock is used for in concurrency programming. It improves memory utilization and write throughput depending on the platform that JVM runs on.
boolean isHasBaseDir()
int getMaxChunkSize()
This value is used to determine the size of chunks to emit when consuming request/response bodies. This generally only has an impact when consuming the body as a stream. A lower value will reduce memory pressure by requiring less memory at one time, but at the expense of throughput.
Defaults to DEFAULT_MAX_CHUNK_SIZE
.
This value is suitable for most applications.
If your application deals with very large bodies, you may want to increase it.
int getMaxInitialLineLength()
This value is used to determine the maximum allowed length for the initial line of an http request.
Defaults to DEFAULT_MAX_INITIAL_LINE_LENGTH
.
This value is suitable for most applications.
If your application deals with very large request URIs, you may want to increase it.
int getMaxHeaderSize()
This value is used to determine the maximum allowed size for the sum of the length all headers of an http request.
Defaults to DEFAULT_MAX_HEADER_SIZE
.
This value is suitable for most applications.
If your application deals with very large http headers, you may want to increase it.
java.time.Duration getIdleTimeout()
If the connection is idle for the timeout value, it will be closed.
This value can be overridden on a per request basis by Request.setIdleTimeout(Duration)
.
A value of Duration.ZERO
is interpreted as no timeout.
The value is never Duration.isNegative()
.
This timeout affects several aspects.
Request.getBody()
or similar.
if the body is requested after the connection times out, a ConnectionClosedException
will be propagated.
This timeout also applies to writing the response. If the application does not emit a response within the timeout after the client has sent all the bytes it is going to, the connection will be closed.
When sending a response, if the client does not read within the timeout, the connection will be closed.
When streaming a response, if nothing is sent within the timeout, the connection will be closed.
This means that if you are streaming a real time data set where new data may not be available
within the timeout but you do not want to drop the connection, you should set a request specific timeout
using Request.setIdleTimeout(Duration)
If the client supports keep alive, the connection will remain open after first use so that it can be reused for subsequent requests from the client. If the request is not reused (i.e. no new request headers are sent) within this timeout, the connection will be closed. This value is always used for this timeout. Any specific timeout set when handling the previous request is not used.
FileSystemBinding getBaseDir() throws NoBaseDirException
FileSystemBinding
.NoBaseDirException
- if this launch config has no base dir set.