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
FieldsModifier and TypeFieldDescriptionprotected intprotected ResteasyDeploymentprotected SecurityDomainprotected Stringprotected Stringprotected int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondeploy()Returns the deployment being used for the server.intgetPort()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) voidsetDecoderSpecFn(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()voidCalling this method will block the current thread.voidstop()Stops the server.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods 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:
deployin interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
start
- Specified by:
startin interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
startAndBlock
public void startAndBlock()Calling this method will block the current thread. -
stop
public void stop()Description copied from interface:EmbeddedServerStops the server.- Specified by:
stopin interfaceEmbeddedServer
-
getDeployment
Description copied from interface:EmbeddedServerReturns the deployment being used for the server.- Specified by:
getDeploymentin interfaceEmbeddedServer- Returns:
- the deployment
-
setDeployment
- Specified by:
setDeploymentin interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
setPort
- Specified by:
setPortin interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
getPort
public int getPort() -
setHostname
- Specified by:
setHostnamein interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
getHostname
-
setRootResourcePath
- Specified by:
setRootResourcePathin interfaceEmbeddedJaxrsServer<ReactorNettyJaxrsServer>
-
setSecurityDomain
- Specified by:
setSecurityDomainin 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-
-