- java.lang.Object
-
- io.helidon.webserver.WebServer.Builder
-
- All Implemented Interfaces:
Builder<WebServer>,MediaContextBuilder<WebServer.Builder>,ParentingMediaContextBuilder<WebServer.Builder>,SocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>,Supplier<WebServer>
- Enclosing interface:
- WebServer
public static final class WebServer.Builder extends Object implements Builder<WebServer>, SocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>, ParentingMediaContextBuilder<WebServer.Builder>, MediaContextBuilder<WebServer.Builder>
WebServer builder class provides a convenient way to set up WebServer with multiple server sockets and optional multiple routings.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description WebServer.BuilderaddMediaSupport(MediaSupport mediaSupport)Adds new instance ofMediaSupport.WebServer.BuilderaddNamedRouting(String name, Routing routing)Associates a dedicated routing with an additional server socket configuration.WebServer.BuilderaddNamedRouting(String name, Supplier<Routing> routingBuilder)Associates a dedicated routing with an additional server socket configuration.WebServer.BuilderaddReader(MessageBodyReader<?> reader)Registers new reader.WebServer.BuilderaddSocket(SocketConfiguration config)Adds an additional named server socket configuration.WebServer.BuilderaddSocket(SocketConfiguration socketConfiguration, Routing routing)Add a named socket and routing.WebServer.BuilderaddSocket(String name, SocketConfiguration socketConfiguration)Deprecated.since 2.0.0, please useaddSocket(SocketConfiguration)instead, name is now part of socket configurationWebServer.BuilderaddSocket(String name, Supplier<SocketConfiguration> socketConfigurationBuilder)Deprecated.since 2.0.0, please useaddSocket(Supplier)instead, name is now part of socket configurationWebServer.BuilderaddSocket(Supplier<SocketConfiguration> socketConfigurationBuilder)Adds an additional named server socket configuration builder.WebServer.BuilderaddStreamReader(MessageBodyStreamReader<?> streamReader)Registers new stream reader.WebServer.BuilderaddStreamWriter(MessageBodyStreamWriter<?> streamWriter)Registers new stream writer.WebServer.BuilderaddWriter(MessageBodyWriter<?> writer)Registers new writer.WebServer.Builderbacklog(int backlog)Configures a maximum length of the queue of incoming connections on the server socket.WebServer.BuilderbindAddress(InetAddress bindAddress)Configures local address where the server listens on with the server socket.WebServerbuild()Builds theWebServerinstance as configured by this builder and its parameters.WebServer.Builderconfig(Config config)Update this server configuration from the config provided.WebServer.Builderconfig(ServerConfiguration configuration)Deprecated.since 2.0.0 - please use methods on this builder, orconfig(io.helidon.config.Config)insteadWebServer.Builderconfig(Supplier<ServerConfiguration> configurationBuilder)Deprecated.since 2.0.0 - seeconfig(ServerConfiguration)WebServer.Buildercontext(Context context)Configure the application scoped context to be used as a parent for webserver request contexts.WebServer.Builderexperimental(ExperimentalConfiguration experimental)Configure experimental features.booleanhasSocket(String socketName)A method to validate a named socket configuration exists in this builder.WebServer.BuildermediaContext(MediaContext mediaContext)Sets theMediaContextparent and overrides the existing one.WebServer.Builderport(int port)Configures a server port to listen on with the server socket.WebServer.BuilderprintFeatureDetails(boolean shouldPrint)Set totrueto print detailed feature information on startup.WebServer.BuilderreceiveBufferSize(int receiveBufferSize)Configures proposed value of the TCP receive window that is advertised to the remote peer on the server socket.WebServer.Builderrouting(Routing defaultRouting)Configure the default routing of this WebServer.WebServer.Builderrouting(Supplier<Routing> defaultRouting)Configure the default routing of this WebServer.WebServer.Buildertimeout(long amount, TimeUnit unit)Configures a server socket timeout.WebServer.Buildertls(WebServerTls webServerTls)Configures SSL for this socket.WebServer.Buildertracer(io.opentracing.Tracer tracer)Sets an opentracing.io tracer.WebServer.Buildertracer(Supplier<? extends io.opentracing.Tracer> tracerBuilder)Sets an opentracing.io tracer.WebServer.Builderupdate(Consumer<WebServer.Builder> updateFunction)A helper method to support fluentAPI when invoking another method.WebServer.BuilderworkersCount(int workers)Sets a count of threads in pool used to process HTTP requests.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.helidon.webserver.SocketConfiguration.SocketConfigurationBuilder
bindAddress, host, tls
-
-
-
-
Method Detail
-
build
public WebServer build()
Builds theWebServerinstance as configured by this builder and its parameters.- Specified by:
buildin interfaceBuilder<WebServer>- Returns:
- a ready to use
WebServer - Throws:
IllegalStateException- if there are unpaired named routings (as described ataddNamedRouting(String, Routing))
-
routing
public WebServer.Builder routing(Routing defaultRouting)
Configure the default routing of this WebServer. Default routing is the one available on the default listenhostandportof the WebServer- Parameters:
defaultRouting- new default routing; if already configured, this instance would replace the existing instance- Returns:
- updated builder instance
-
routing
public WebServer.Builder routing(Supplier<Routing> defaultRouting)
Configure the default routing of this WebServer. Default routing is the one available on the default listenhostandportof the WebServer- Parameters:
defaultRouting- new default routing; if already configured, this instance would replace the existing instance- Returns:
- updated builder instance
-
config
@Deprecated public WebServer.Builder config(ServerConfiguration configuration)
Deprecated.since 2.0.0 - please use methods on this builder, orconfig(io.helidon.config.Config)insteadSet a configuration of theWebServer. Once this method is called, all other methods on this interface related to server configuration are ignored.- Parameters:
configuration- the configuration- Returns:
- an updated builder
-
config
@Deprecated public WebServer.Builder config(Supplier<ServerConfiguration> configurationBuilder)
Deprecated.since 2.0.0 - seeconfig(ServerConfiguration)Set a configuration of theWebServer.- Parameters:
configurationBuilder- the configuration builder- Returns:
- an updated builder
-
config
public WebServer.Builder config(Config config)
Update this server configuration from the config provided.- Specified by:
configin interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
config- config located on server node- Returns:
- an updated builder
- Since:
- 2.0.0
-
addNamedRouting
public WebServer.Builder addNamedRouting(String name, Routing routing)
Associates a dedicated routing with an additional server socket configuration.The additional server socket configuration must be set as per
ServerConfiguration.Builder.addSocket(String, SocketConfiguration). If there is no such named server socket configuration, aIllegalStateExceptionis thrown by thebuild()method.- Parameters:
name- the named server socket configuration to associate the provided routing withrouting- the routing to associate with the provided name of a named server socket configuration- Returns:
- an updated builder
-
addNamedRouting
public WebServer.Builder addNamedRouting(String name, Supplier<Routing> routingBuilder)
Associates a dedicated routing with an additional server socket configuration.The additional server socket configuration must be set as per
ServerConfiguration.Builder.addSocket(String, SocketConfiguration). If there is no such named server socket configuration, aIllegalStateExceptionis thrown by thebuild()method.- Parameters:
name- the named server socket configuration to associate the provided routing withroutingBuilder- the routing builder to associate with the provided name of a named server socket configuration; will be built as a first step of this method execution- Returns:
- an updated builder
-
mediaContext
public WebServer.Builder mediaContext(MediaContext mediaContext)
Description copied from interface:ParentingMediaContextBuilderSets theMediaContextparent and overrides the existing one. This method discards all previously registered readers and writers via builder.- Specified by:
mediaContextin interfaceParentingMediaContextBuilder<WebServer.Builder>- Parameters:
mediaContext- media context- Returns:
- updated instance of the builder
-
addMediaSupport
public WebServer.Builder addMediaSupport(MediaSupport mediaSupport)
Description copied from interface:MediaContextBuilderAdds new instance ofMediaSupport.- Specified by:
addMediaSupportin interfaceMediaContextBuilder<WebServer.Builder>- Parameters:
mediaSupport- media support- Returns:
- updated instance of the builder
-
addReader
public WebServer.Builder addReader(MessageBodyReader<?> reader)
Description copied from interface:MediaContextBuilderRegisters new reader.- Specified by:
addReaderin interfaceMediaContextBuilder<WebServer.Builder>- Parameters:
reader- reader- Returns:
- updated instance of the builder
-
addStreamReader
public WebServer.Builder addStreamReader(MessageBodyStreamReader<?> streamReader)
Description copied from interface:MediaContextBuilderRegisters new stream reader.- Specified by:
addStreamReaderin interfaceMediaContextBuilder<WebServer.Builder>- Parameters:
streamReader- stream reader- Returns:
- updated instance of the builder
-
addWriter
public WebServer.Builder addWriter(MessageBodyWriter<?> writer)
Description copied from interface:MediaContextBuilderRegisters new writer.- Specified by:
addWriterin interfaceMediaContextBuilder<WebServer.Builder>- Parameters:
writer- writer- Returns:
- updated instance of the builder
-
addStreamWriter
public WebServer.Builder addStreamWriter(MessageBodyStreamWriter<?> streamWriter)
Description copied from interface:MediaContextBuilderRegisters new stream writer.- Specified by:
addStreamWriterin interfaceMediaContextBuilder<WebServer.Builder>- Parameters:
streamWriter- stream writer- Returns:
- updated instance of the builder
-
port
public WebServer.Builder port(int port)
Description copied from interface:SocketConfiguration.SocketConfigurationBuilderConfigures a server port to listen on with the server socket. If port is0then any available ephemeral port will be used.- Specified by:
portin interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
port- the server port of the server socket- Returns:
- this builder
-
bindAddress
public WebServer.Builder bindAddress(InetAddress bindAddress)
Description copied from interface:SocketConfiguration.SocketConfigurationBuilderConfigures local address where the server listens on with the server socket. If not configured, then listens an all local addresses.- Specified by:
bindAddressin interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
bindAddress- an address to bind with the server socket- Returns:
- this builder
-
backlog
public WebServer.Builder backlog(int backlog)
Description copied from interface:SocketConfiguration.SocketConfigurationBuilderConfigures a maximum length of the queue of incoming connections on the server socket.Default value is
SocketConfiguration.DEFAULT_BACKLOG_SIZE.- Specified by:
backlogin interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
backlog- a maximum length of the queue of incoming connections- Returns:
- this builder
-
timeout
public WebServer.Builder timeout(long amount, TimeUnit unit)
Description copied from interface:SocketConfiguration.SocketConfigurationBuilderConfigures a server socket timeout.- Specified by:
timeoutin interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
amount- an amount of time to configure the timeout, use0for infinite timeoutunit- time unit to use with the configured amount- Returns:
- this builder
-
receiveBufferSize
public WebServer.Builder receiveBufferSize(int receiveBufferSize)
Description copied from interface:SocketConfiguration.SocketConfigurationBuilderConfigures proposed value of the TCP receive window that is advertised to the remote peer on the server socket.If
0then use implementation default.- Specified by:
receiveBufferSizein interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
receiveBufferSize- a buffer size in bytes of the server socket or0- Returns:
- this builder
-
tls
public WebServer.Builder tls(WebServerTls webServerTls)
Description copied from interface:SocketConfiguration.SocketConfigurationBuilderConfigures SSL for this socket. When configured, the server enforces SSL configuration. If this method is called, any other method except forSocketConfiguration.SocketConfigurationBuilder.tls(java.util.function.Supplier)ยจ and repeated invocation of this method would be ignored.If this method is called again, the previous configuration would be ignored.
- Specified by:
tlsin interfaceSocketConfiguration.SocketConfigurationBuilder<WebServer.Builder>- Parameters:
webServerTls- ssl configuration to use with this socket- Returns:
- this builder
-
experimental
public WebServer.Builder experimental(ExperimentalConfiguration experimental)
Configure experimental features.- Parameters:
experimental- experimental configuration- Returns:
- an updated builder
-
update
public WebServer.Builder update(Consumer<WebServer.Builder> updateFunction)
A helper method to support fluentAPI when invoking another method.Example:
WebServer.Builder builder = WebServer.builder(); updateBuilder(builder); return builder.build();Can be changed to:return WebServer.builder() .update(this::updateBuilder) .build();- Parameters:
updateFunction- function to update this builder- Returns:
- an updated builder
-
addSocket
@Deprecated public WebServer.Builder addSocket(String name, SocketConfiguration socketConfiguration)
Deprecated.since 2.0.0, please useaddSocket(SocketConfiguration)instead, name is now part of socket configurationAdds an additional named server socket configuration. As a result, the server will listen on multiple ports.An additional named server socket may have a dedicated
Routingconfigured throughaddNamedRouting(String, Routing).- Parameters:
name- the name of the additional server socket configurationsocketConfiguration- the additional named server socket configuration, never null- Returns:
- an updated builder
-
addSocket
public WebServer.Builder addSocket(SocketConfiguration config)
Adds an additional named server socket configuration. As a result, the server will listen on multiple ports.An additional named server socket may have a dedicated
Routingconfigured throughaddNamedRouting(String, Routing).- Parameters:
config- the additional named server socket configuration, never null- Returns:
- an updated builder
-
addSocket
@Deprecated public WebServer.Builder addSocket(String name, Supplier<SocketConfiguration> socketConfigurationBuilder)
Deprecated.since 2.0.0, please useaddSocket(Supplier)instead, name is now part of socket configurationAdds an additional named server socket configuration builder. As a result, the server will listen on multiple ports.An additional named server socket may have a dedicated
Routingconfigured throughaddNamedRouting(String, Routing).- Parameters:
name- the name of the additional server socket configurationsocketConfigurationBuilder- the additional named server socket configuration builder; will be built as a first step of this method execution- Returns:
- an updated builder
-
addSocket
public WebServer.Builder addSocket(Supplier<SocketConfiguration> socketConfigurationBuilder)
Adds an additional named server socket configuration builder. As a result, the server will listen on multiple ports.An additional named server socket may have a dedicated
Routingconfigured throughaddNamedRouting(String, Routing).- Parameters:
socketConfigurationBuilder- the additional named server socket configuration builder; will be built as a first step of this method execution- Returns:
- an updated builder
-
addSocket
public WebServer.Builder addSocket(SocketConfiguration socketConfiguration, Routing routing)
Add a named socket and routing.- Parameters:
socketConfiguration- named configuration of the socketrouting- routing to use for this socket- Returns:
- an updated builder
-
tracer
public WebServer.Builder tracer(io.opentracing.Tracer tracer)
Sets an opentracing.io tracer. (Default isGlobalTracer.)- Parameters:
tracer- a tracer to set- Returns:
- an updated builder
-
tracer
public WebServer.Builder tracer(Supplier<? extends io.opentracing.Tracer> tracerBuilder)
Sets an opentracing.io tracer. (Default isGlobalTracer.)- Parameters:
tracerBuilder- a tracer builder to set; will be built as a first step of this method execution- Returns:
- updated builder
-
hasSocket
public boolean hasSocket(String socketName)
A method to validate a named socket configuration exists in this builder.- Parameters:
socketName- name of the socket, usingWebServer.DEFAULT_SOCKET_NAMEwill always returntrue- Returns:
truein case the named socket is configured in this builder
-
context
public WebServer.Builder context(Context context)
Configure the application scoped context to be used as a parent for webserver request contexts.- Parameters:
context- top level context- Returns:
- an updated builder
-
workersCount
public WebServer.Builder workersCount(int workers)
Sets a count of threads in pool used to process HTTP requests. Default value isCPU_COUNT * 2.Configuration key:
workers- Parameters:
workers- a workers count- Returns:
- an updated builder
-
printFeatureDetails
public WebServer.Builder printFeatureDetails(boolean shouldPrint)
Set totrueto print detailed feature information on startup.- Parameters:
shouldPrint- whether to print details or not- Returns:
- updated builder instance
- See Also:
HelidonFeatures
-
-