Class Http4K
java.lang.Object
org.nustaq.kontraktor.remoting.http.undertow.Http4K
public class Http4K
extends java.lang.Object
Created by ruedi on 25/05/15.
singleton to manage http server instances. Currently tied to Undertow however implicitely shields kontraktor-http
from getting too dependent on Undertow (which is an excellent piece of software, so no plans to migrate anytime soon)
-
Field Summary
Fields Modifier and Type Field Description protected static Http4Kinstanceprotected java.util.Map<java.lang.Integer,org.nustaq.kontraktor.util.Pair<io.undertow.server.handlers.PathHandler,io.undertow.Undertow>>serverMapstatic intUNDERTOW_IO_THREADSstatic intUNDERTOW_WORKER_THREADS -
Constructor Summary
Constructors Constructor Description Http4K() -
Method Summary
Modifier and Type Method Description static BldFourKBuild(java.lang.String hostName, int port)static BldFourKBuild(java.lang.String hostName, int port, javax.net.ssl.SSLContext ctx)BldFourKbuilder(java.lang.String hostName, int port)BldFourKbuilder(java.lang.String hostName, int port, javax.net.ssl.SSLContext ctx)protected io.undertow.Undertow.Buildercustomize(io.undertow.Undertow.Builder builder, io.undertow.server.handlers.PathHandler rootPathHandler, int port, java.lang.String hostName, javax.net.ssl.SSLContext context)static Http4Kget()org.nustaq.kontraktor.util.Pair<io.undertow.server.handlers.PathHandler,io.undertow.Undertow>getServer(int port, java.lang.String hostName)creates or gets an undertow web server instance mapped by port.org.nustaq.kontraktor.util.Pair<io.undertow.server.handlers.PathHandler,io.undertow.Undertow>getServer(int port, java.lang.String hostName, javax.net.ssl.SSLContext context)org.nustaq.kontraktor.IPromise<org.nustaq.kontraktor.remoting.base.ActorServer>publish(HttpPublisher publisher)utility, just redirects to approriate connector.org.nustaq.kontraktor.IPromise<org.nustaq.kontraktor.remoting.base.ActorServer>publish(WebSocketPublisher publisher)utility, just redirects to approriate connector Publishes an actor/service via websockets protocol with given encoding.Http4KpublishFileSystem(java.lang.String hostName, java.lang.String urlPath, int port, io.undertow.server.handlers.resource.FileResourceManager man)Http4KpublishFileSystem(java.lang.String hostName, java.lang.String urlPath, int port, java.io.File root)publishes given file rootHttp4KpublishHandler(java.lang.String hostName, java.lang.String urlPath, int port, io.undertow.server.HttpHandler handler)Http4KpublishResourcePath(java.lang.String hostName, java.lang.String urlPath, int port, DynamicResourceManager man, boolean compress)Http4KpublishResourcePath(java.lang.String hostName, java.lang.String urlPath, int port, DynamicResourceManager man, boolean compress, java.util.function.Function<io.undertow.server.HttpServerExchange,java.lang.Boolean> interceptor)static voidset(Http4K http)Http4KunPublishHandler(java.lang.String urlPath, int port)
-
Field Details
-
UNDERTOW_IO_THREADS
public static int UNDERTOW_IO_THREADS -
UNDERTOW_WORKER_THREADS
public static int UNDERTOW_WORKER_THREADS -
instance
-
serverMap
protected java.util.Map<java.lang.Integer,org.nustaq.kontraktor.util.Pair<io.undertow.server.handlers.PathHandler,io.undertow.Undertow>> serverMap
-
-
Constructor Details
-
Http4K
public Http4K()
-
-
Method Details
-
set
-
get
-
Build
-
Build
-
getServer
public org.nustaq.kontraktor.util.Pair<io.undertow.server.handlers.PathHandler,io.undertow.Undertow> getServer(int port, java.lang.String hostName)creates or gets an undertow web server instance mapped by port. hostname must be given in case a new server instance has to be instantiated- Parameters:
port-hostName-- Returns:
-
getServer
public org.nustaq.kontraktor.util.Pair<io.undertow.server.handlers.PathHandler,io.undertow.Undertow> getServer(int port, java.lang.String hostName, javax.net.ssl.SSLContext context) -
builder
-
builder
-
customize
protected io.undertow.Undertow.Builder customize(io.undertow.Undertow.Builder builder, io.undertow.server.handlers.PathHandler rootPathHandler, int port, java.lang.String hostName, javax.net.ssl.SSLContext context) -
publishFileSystem
public Http4K publishFileSystem(java.lang.String hostName, java.lang.String urlPath, int port, java.io.File root)publishes given file root- Parameters:
hostName-urlPath- - prefixPath (e.g. /myapp/resource)port-root- - directory to be published
-
publishFileSystem
public Http4K publishFileSystem(java.lang.String hostName, java.lang.String urlPath, int port, io.undertow.server.handlers.resource.FileResourceManager man) -
publishResourcePath
public Http4K publishResourcePath(java.lang.String hostName, java.lang.String urlPath, int port, DynamicResourceManager man, boolean compress) -
publishResourcePath
public Http4K publishResourcePath(java.lang.String hostName, java.lang.String urlPath, int port, DynamicResourceManager man, boolean compress, java.util.function.Function<io.undertow.server.HttpServerExchange,java.lang.Boolean> interceptor) -
publish
public org.nustaq.kontraktor.IPromise<org.nustaq.kontraktor.remoting.base.ActorServer> publish(WebSocketPublisher publisher)utility, just redirects to approriate connector Publishes an actor/service via websockets protocol with given encoding. if this should be connectable from non-java code recommended coding is 'new Coding(SerializerType.JsonNoRefPretty)' (dev), 'new Coding(SerializerType.JsonNoRef)' (production) SerializerType.FSTSer is the most effective for java to java communication. -
publish
public org.nustaq.kontraktor.IPromise<org.nustaq.kontraktor.remoting.base.ActorServer> publish(HttpPublisher publisher)utility, just redirects to approriate connector. -
publishHandler
public Http4K publishHandler(java.lang.String hostName, java.lang.String urlPath, int port, io.undertow.server.HttpHandler handler) -
unPublishHandler
-