Class ReactorNettyJaxrsServer
java.lang.Object
org.jboss.resteasy.plugins.server.reactor.netty.ReactorNettyJaxrsServer
- All Implemented Interfaces:
EmbeddedJaxrsServer<ReactorNettyJaxrsServer>
,EmbeddedServer
public class ReactorNettyJaxrsServer
extends Object
implements EmbeddedJaxrsServer<ReactorNettyJaxrsServer>
A server adapter built on top of reactor-netty. Similar
to the adapter built on top of netty4, this adapter will ultimately run on
Netty rails. Leveraging reactor-netty brings 3 main benefits, which are:
1. Reactor-netty's HttpServer + handle(req, resp) API is a little closer
match to how a normal HTTP server works. Basically, it should be easier for
an HTTP web server person to maintain compared to a raw Netty
implementation. However, this assumes you don't have to delve into
reactor-netty!
2. Reactor Netty puts a reactor
facade on top of Netty. The Observable+Iterable programming paradigm is
more general purpose than Netty's IO-centric Channel concept. In theory, it
should be more beneficial to learn:)
3. When paired with a Netty-based client (e.g. the JAX-RS client powered by
reactor-netty), the threadpool can be efficiently shared between the client
and the server.
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
protected ResteasyDeployment
protected SecurityDomain
protected String
protected String
protected int
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiondeploy()
Returns the deployment being used for the server.int
getPort()
setCleanUpTasks
(List<Runnable> cleanUpTasks) Sets clean up tasks that are needed immediately afterDispatcher.invoke(org.jboss.resteasy.spi.HttpRequest, org.jboss.resteasy.spi.HttpResponse)
yet before any asynchronous asynchronous work is continued by the reactor-netty server.setClientAuth
(io.netty.handler.ssl.ClientAuth clientAuth) void
setDecoderSpecFn
(UnaryOperator<reactor.netty.http.server.HttpRequestDecoderSpec> decoderSpecFn) setDeployment
(ResteasyDeployment deployment) setHostname
(String hostname) setIdleTimeout
(Duration idleTimeout) setPort
(int port) setRootResourcePath
(String rootResourcePath) setSSLContext
(SSLContext sslContext) start()
void
Calling this method will block the current thread.void
stop()
Stops the server.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.jboss.resteasy.plugins.server.embedded.EmbeddedJaxrsServer
start
-
Field Details
-
hostname
-
configuredPort
protected int configuredPort -
runtimePort
protected int runtimePort -
root
-
deployment
-
domain
-
-
Constructor Details
-
ReactorNettyJaxrsServer
public ReactorNettyJaxrsServer()
-
-
Method Details
-
deploy
- Specified by:
deploy
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
start
- Specified by:
start
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
startAndBlock
public void startAndBlock()Calling this method will block the current thread. -
stop
public void stop()Description copied from interface:EmbeddedServer
Stops the server.- Specified by:
stop
in interfaceEmbeddedServer
-
getDeployment
Description copied from interface:EmbeddedServer
Returns the deployment being used for the server.- Specified by:
getDeployment
in interfaceEmbeddedServer
- Returns:
- the deployment
-
setDeployment
- Specified by:
setDeployment
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
setPort
- Specified by:
setPort
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
getPort
public int getPort() -
setHostname
- Specified by:
setHostname
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
getHostname
-
setRootResourcePath
- Specified by:
setRootResourcePath
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
setSecurityDomain
- Specified by:
setSecurityDomain
in interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
setIdleTimeout
-
setSSLContext
-
setClientAuth
-
setCleanUpTasks
Sets clean up tasks that are needed immediately afterDispatcher.invoke(org.jboss.resteasy.spi.HttpRequest, org.jboss.resteasy.spi.HttpResponse)
yet before any asynchronous asynchronous work is continued by the reactor-netty server. Since these run on the Netty event loop threads, it is important that they run fast (not block). It is expected that you take special care with exceptions. This is useful in certain cases where servlet Filters have options that are hard to achieve with the pure JAX-RS API, such as:doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) { establishThreadLocals(); chain.doFilter(req, resp, chain); clearThreadLocals(); }
- Parameters:
cleanUpTasks
- List of clean up tasks- Returns:
- ReactorNettyJaxrsServer
-
setDecoderSpecFn
public void setDecoderSpecFn(UnaryOperator<reactor.netty.http.server.HttpRequestDecoderSpec> decoderSpecFn) - Parameters:
decoderSpecFn
-
-