java.lang.Object
org.refcodes.observer.AbstractObservable<RestEndpoint,org.refcodes.web.HttpRequest>
org.refcodes.rest.AbstractRestServer
org.refcodes.rest.HttpRestServerImpl
- All Implemented Interfaces:
org.refcodes.component.Closable,org.refcodes.component.Closable.CloseBuilder<org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<org.refcodes.web.HttpServerContext,,HttpRestServer>> org.refcodes.component.ConnectionComponent<org.refcodes.web.HttpServerContext>,org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<org.refcodes.web.HttpServerContext,,HttpRestServer> org.refcodes.component.ConnectionOpenable<org.refcodes.web.HttpServerContext>,org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<org.refcodes.web.HttpServerContext,,org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<org.refcodes.web.HttpServerContext, HttpRestServer>> org.refcodes.component.ConnectionStatusAccessor,org.refcodes.component.LinkComponent,org.refcodes.component.Openable,org.refcodes.component.OpenedAccessor,org.refcodes.io.MaxConnectionsAccessor,org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsBuilder<HttpRestServer>,org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsMutator,org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsProperty,org.refcodes.mixin.Disposable,org.refcodes.mixin.Loggable,org.refcodes.mixin.PortAccessor,org.refcodes.mixin.PortAccessor.PortBuilder<HttpRestServer>,org.refcodes.mixin.PortAccessor.PortMutator,org.refcodes.mixin.PortAccessor.PortProperty,org.refcodes.observer.Observable<RestEndpoint>,org.refcodes.observer.Observers<RestEndpoint,,RestServer> HttpExceptionHandlerAccessor,HttpExceptionHandlerAccessor.HttpExceptionHandlerBuilder<RestServer>,HttpExceptionHandlerAccessor.HttpExceptionHandlerMutator,HttpExceptionHandlerAccessor.HttpExceptionHandlerProperty,HttpExceptionHandlingAccessor,HttpExceptionHandlingAccessor.HttpExceptionHandlingBuilder<RestServer>,HttpExceptionHandlingAccessor.HttpExceptionHandlingMutator,HttpExceptionHandlingAccessor.HttpExceptionHandlingProperty,HttpRestServer,RestServer,org.refcodes.runtime.RequestCorrelation<RestServer>,org.refcodes.runtime.SessionCorrelation<RestServer>,org.refcodes.security.KeyStoreDescriptorAccessor,org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorBuilder<HttpRestServer>,org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorMutator,org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorProperty,org.refcodes.web.BaseLocatorAccessor,org.refcodes.web.BaseLocatorAccessor.BaseLocatorBuilder<RestServer>,org.refcodes.web.BaseLocatorAccessor.BaseLocatorMutator,org.refcodes.web.BaseLocatorAccessor.BaseLocatorProperty,org.refcodes.web.BasicAuthObservable<HttpRestServer>,org.refcodes.web.HttpsConnectionRequestObservable<HttpRestServer>,org.refcodes.web.MediaTypeFactoryLookup,org.refcodes.web.MediaTypeFactoryLookup.MutableMediaTypeFactoryLookup,org.refcodes.web.RealmAccessor,org.refcodes.web.RealmAccessor.RealmBuilder<RestServer>,org.refcodes.web.RealmAccessor.RealmMutator,org.refcodes.web.RealmAccessor.RealmProperty,org.refcodes.web.SchemeAccessor,org.refcodes.web.SchemeAccessor.SchemeBuilder<HttpRestServer>,org.refcodes.web.SchemeAccessor.SchemeMutator,org.refcodes.web.SchemeAccessor.SchemeProperty
- Direct Known Subclasses:
HttpRestServerSingleton
Implementation of the
HttpRestServer interface using the
HttpServer defined in the com.sun.net.httpserver
package. The HttpRestServerImpl is being initialized with some common
MediaTypeFactory instances (as implemented by the
AbstractRestServer). At the time of writing this document the
MediaTypeFactory instances being pre-configured are:
JsonMediaTypeFactoryXmlMediaTypeFactoryTextMediaTypeFactoryFormMediaTypeFactory
HttpRestServerImpl supports HTTP as well as HTTPS protocols as
being based on the HttpServer as well as on the HttpsServer.
For opening up an HTTPS connection, refer to the methods such as
HttpRestServer.open(String, KeyStoreDescriptor, int) or
HttpRestServer.open(KeyStoreDescriptor, int) and the like.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.web.BaseLocatorAccessor
org.refcodes.web.BaseLocatorAccessor.BaseLocatorBuilder<B extends org.refcodes.web.BaseLocatorAccessor.BaseLocatorBuilder<B>>, org.refcodes.web.BaseLocatorAccessor.BaseLocatorMutator, org.refcodes.web.BaseLocatorAccessor.BaseLocatorPropertyNested classes/interfaces inherited from interface org.refcodes.component.Closable
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionComponent
org.refcodes.component.ConnectionComponent.ConnectionAutomaton<CON extends Object>, org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON extends Object,B extends org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON, B>> Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionOpenable
org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<CON extends Object>, org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON extends Object,B extends org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON, B>> Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusPropertyNested classes/interfaces inherited from interface org.refcodes.rest.HttpExceptionHandlerAccessor
HttpExceptionHandlerAccessor.HttpExceptionHandlerBuilder<B extends HttpExceptionHandlerAccessor.HttpExceptionHandlerBuilder<B>>, HttpExceptionHandlerAccessor.HttpExceptionHandlerMutator, HttpExceptionHandlerAccessor.HttpExceptionHandlerPropertyNested classes/interfaces inherited from interface org.refcodes.rest.HttpExceptionHandlingAccessor
HttpExceptionHandlingAccessor.HttpExceptionHandlingBuilder<B extends HttpExceptionHandlingAccessor.HttpExceptionHandlingBuilder<B>>, HttpExceptionHandlingAccessor.HttpExceptionHandlingMutator, HttpExceptionHandlingAccessor.HttpExceptionHandlingPropertyNested classes/interfaces inherited from interface org.refcodes.security.KeyStoreDescriptorAccessor
org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorBuilder<B extends org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorBuilder<B>>, org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorMutator, org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorPropertyNested classes/interfaces inherited from interface org.refcodes.component.LinkComponent
org.refcodes.component.LinkComponent.LinkAutomaton, org.refcodes.component.LinkComponent.LinkComponentBuilder<B extends org.refcodes.component.LinkComponent.LinkComponentBuilder<B>>Nested classes/interfaces inherited from interface org.refcodes.io.MaxConnectionsAccessor
org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsBuilder<B extends org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsBuilder<B>>, org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsMutator, org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsPropertyNested classes/interfaces inherited from interface org.refcodes.web.MediaTypeFactoryLookup
org.refcodes.web.MediaTypeFactoryLookup.MutableMediaTypeFactoryLookupNested classes/interfaces inherited from interface org.refcodes.component.Openable
org.refcodes.component.Openable.OpenAutomaton, org.refcodes.component.Openable.OpenBuilder<B extends org.refcodes.component.Openable.OpenBuilder<B>>Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedPropertyNested classes/interfaces inherited from interface org.refcodes.mixin.PortAccessor
org.refcodes.mixin.PortAccessor.PortBuilder<B extends org.refcodes.mixin.PortAccessor.PortBuilder<B>>, org.refcodes.mixin.PortAccessor.PortMutator, org.refcodes.mixin.PortAccessor.PortPropertyNested classes/interfaces inherited from interface org.refcodes.web.RealmAccessor
org.refcodes.web.RealmAccessor.RealmBuilder<B extends org.refcodes.web.RealmAccessor.RealmBuilder<B>>, org.refcodes.web.RealmAccessor.RealmMutator, org.refcodes.web.RealmAccessor.RealmPropertyNested classes/interfaces inherited from interface org.refcodes.web.SchemeAccessor
org.refcodes.web.SchemeAccessor.SchemeBuilder<B extends org.refcodes.web.SchemeAccessor.SchemeBuilder<B>>, org.refcodes.web.SchemeAccessor.SchemeMutator, org.refcodes.web.SchemeAccessor.SchemeProperty -
Field Summary
FieldsFields inherited from class org.refcodes.rest.AbstractRestServer
_hasRequestCorrelation, _hasSessionCorrelation, _httpExceptionHandler, _httpExceptionHandlingFields inherited from interface org.refcodes.mixin.Loggable
RUNTIME_LOGGER_CLASS, RUNTIME_LOGGER_FACTORY_CLASS, RUNTIME_LOGGER_FACTORY_METHOD -
Constructor Summary
ConstructorsConstructorDescriptionConstructs aHttpRestServerImpl.HttpRestServerImpl(ExecutorService aExecutorService) Constructs aHttpRestServerImpl.HttpRestServerImpl(org.refcodes.controlflow.ThreadingModel aThreadingModel) Constructs aHttpRestServerImpl. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()org.refcodes.component.ConnectionStatusprotected HttpServerGets the http server.org.refcodes.security.KeyStoreDescriptorintintgetPort()org.refcodes.data.SchemeonBasicAuthRequest(org.refcodes.web.BasicAuthObserver aBasicAuthObserver) onConnectionRequest(org.refcodes.web.HttpsConnectionRequestObserver aObserver) protected voidopen(HttpServer aHttpServer) A hook to be used when using customHttpServer(HttpsServer) by custom open(...) methods of sub-classes of thisHttpRestServerImpl.voidopen(String aProtocol, org.refcodes.security.KeyStoreDescriptor aStoreDescriptor, int aPort, int aMaxConnections) Opens the HTTPS sever connection (socket) at the given port allowing the given number of maximum connections at the same time using the provided HTTPS configuration parameters.voidsetKeyStoreDescriptor(org.refcodes.security.KeyStoreDescriptor aKeyStoreDescriptor) voidsetMaxConnections(int aMaxConnections) voidsetPort(int aPort) voidsetProtocol(String aProtocol) voidsetScheme(org.refcodes.data.Scheme aScheme) Methods inherited from class org.refcodes.rest.AbstractRestServer
addMediaTypeFactory, dispose, doRequestCorrelation, doSessionCorrelation, fireEvent, getBaseLocator, getFactoryMediaTypes, getHttpExceptionHandler, getHttpExceptionHandling, getRealm, hasRequestCorrelation, hasSessionCorrelation, initMedaTypeFactories, isObserversActive, observers, onHttpRequest, setBaseLocator, setHttpExceptionHandler, setHttpExceptionHandling, setObserversActive, setRealm, setRequestCorrelation, setSessionCorrelation, subscribeObserver, toMediaTypeFactory, toNegotiatedContenType, toResponseBody, unsubscribeObserverMethods inherited from class org.refcodes.observer.AbstractObservable
clear, doHandleEventListenerException, fireEvent, getThreadPriority, hasObserverSubscription, isEmpty, setThreadPriority, sizeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.refcodes.web.BaseLocatorAccessor
getBaseLocatorMethods inherited from interface org.refcodes.web.BaseLocatorAccessor.BaseLocatorMutator
setBaseLocatorMethods inherited from interface org.refcodes.web.BaseLocatorAccessor.BaseLocatorProperty
letBaseLocatorMethods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUncheckedMethods inherited from interface org.refcodes.component.Closable.CloseBuilder
withCloseUncheckedMethods inherited from interface org.refcodes.component.ConnectionOpenable
openUncheckedMethods inherited from interface org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder
withOpenUncheckedMethods inherited from interface org.refcodes.component.ConnectionStatusAccessor
isOpenedMethods inherited from interface org.refcodes.rest.HttpExceptionHandlerAccessor
getHttpExceptionHandlerMethods inherited from interface org.refcodes.rest.HttpExceptionHandlerAccessor.HttpExceptionHandlerBuilder
withOnHttpExceptionMethods inherited from interface org.refcodes.rest.HttpExceptionHandlerAccessor.HttpExceptionHandlerMutator
onHttpException, setHttpExceptionHandlerMethods inherited from interface org.refcodes.rest.HttpExceptionHandlerAccessor.HttpExceptionHandlerProperty
letHttpExceptionHandlerMethods inherited from interface org.refcodes.rest.HttpExceptionHandlingAccessor
getHttpExceptionHandlingMethods inherited from interface org.refcodes.rest.HttpExceptionHandlingAccessor.HttpExceptionHandlingMutator
setHttpExceptionHandlingMethods inherited from interface org.refcodes.rest.HttpExceptionHandlingAccessor.HttpExceptionHandlingProperty
letHttpExceptionHandlingMethods inherited from interface org.refcodes.rest.HttpRestServer
open, open, open, open, open, open, open, open, open, open, open, open, withBaseLocator, withClose, withCloseIn, withCloseQuietly, withDisableRequestCorrelation, withDisableSessionCorrelation, withEnableRequestCorrelation, withEnableSessionCorrelation, withHttpExceptionHandler, withHttpExceptionHandling, withKeyStoreDescriptor, withMaxConnections, withOpen, withOpen, withPort, withProtocol, withRequestCorrelation, withScheme, withSessionCorrelationMethods inherited from interface org.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorProperty
letKeyStoreDescriptorMethods inherited from interface org.refcodes.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warnMethods inherited from interface org.refcodes.io.MaxConnectionsAccessor.MaxConnectionsProperty
letMaxConnectionsMethods inherited from interface org.refcodes.web.MediaTypeFactoryLookup
getFactoryMediaTypes, hasMediaTypeFactory, toMediaTypeFactoryMethods inherited from interface org.refcodes.web.MediaTypeFactoryLookup.MutableMediaTypeFactoryLookup
addMediaTypeFactoryMethods inherited from interface org.refcodes.observer.Observable
hasObserverSubscription, subscribeObserver, unsubscribeObserverMethods inherited from interface org.refcodes.observer.Observers
disableObservers, enableObservers, isObserversActive, observers, setObserversActiveMethods inherited from interface org.refcodes.component.Openable
openUncheckedMethods inherited from interface org.refcodes.mixin.PortAccessor.PortProperty
letPortMethods inherited from interface org.refcodes.web.RealmAccessor
getRealmMethods inherited from interface org.refcodes.web.RealmAccessor.RealmMutator
setRealmMethods inherited from interface org.refcodes.web.RealmAccessor.RealmProperty
letRealmMethods inherited from interface org.refcodes.runtime.RequestCorrelation
disableRequestCorrelation, enableRequestCorrelation, hasRequestCorrelation, setRequestCorrelationMethods inherited from interface org.refcodes.rest.RestServer
onDelete, onDelete, onGet, onGet, onPost, onPost, onPut, onPut, onRequest, onRequest, onRequest, onRequest, onRequest, withDisableObservers, withEnableObservers, withObserversActiveMethods inherited from interface org.refcodes.web.SchemeAccessor.SchemeProperty
letProtocol, letSchemeMethods inherited from interface org.refcodes.runtime.SessionCorrelation
disableSessionCorrelation, enableSessionCorrelation, hasSessionCorrelation, setSessionCorrelation
-
Field Details
-
CONTEXT_PATH
-
-
Constructor Details
-
HttpRestServerImpl
public HttpRestServerImpl(org.refcodes.controlflow.ThreadingModel aThreadingModel) Constructs aHttpRestServerImpl. UseHttpRestServer.open(int)or similar to make it listen on your port. The providedThreadingModeldefines whether to use a single-threaded or a multi-threaded threading model. Threads are created as daemon threads. For more control on thread generation use the constructorHttpRestServerImpl(ExecutorService).- Parameters:
aThreadingModel- Specifies to either use a single-threaded threading model (noExecutorService) or a multi-threaded threading model with a defaultExecutorServiceas ofControlFlowUtility.createCachedExecutorService(boolean).
-
HttpRestServerImpl
public HttpRestServerImpl()Constructs aHttpRestServerImpl. UseHttpRestServer.open(int)or similar to make it listen on your port. Uses a multi threaded threading model with a defaultExecutorServiceas ofControlFlowUtility.createCachedExecutorService(boolean). Threads are created as daemon threads. For more control on thread generation use the constructorHttpRestServerImpl(ExecutorService). -
HttpRestServerImpl
Constructs aHttpRestServerImpl. UseHttpRestServer.open(int)or similar to make it listen on your port. Uses a multi threaded threading model.- Parameters:
aExecutorService- An executor service to be used when creatingThreads.
-
-
Method Details
-
close
- Specified by:
closein interfaceorg.refcodes.component.Closable- Throws:
IOException
-
open
public void open(String aProtocol, org.refcodes.security.KeyStoreDescriptor aStoreDescriptor, int aPort, int aMaxConnections) throws IOException Opens the HTTPS sever connection (socket) at the given port allowing the given number of maximum connections at the same time using the provided HTTPS configuration parameters.- Specified by:
openin interfaceHttpRestServer- Parameters:
aProtocol- The protocol to use, e.g. "TLS".aStoreDescriptor- The store descriptor describing yourKeyStorerequired for HTTPS.aPort- The port on which to listen for requests.aMaxConnections- The number of maximum connections at the same time.- Throws:
IOException- thrown in case something went wrong such as the port being already in use.
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()- Specified by:
getConnectionStatusin interfaceorg.refcodes.component.ConnectionStatusAccessor
-
onConnectionRequest
public HttpRestServer onConnectionRequest(org.refcodes.web.HttpsConnectionRequestObserver aObserver) - Specified by:
onConnectionRequestin interfaceorg.refcodes.web.HttpsConnectionRequestObservable<HttpRestServer>
-
onBasicAuthRequest
- Specified by:
onBasicAuthRequestin interfaceorg.refcodes.web.BasicAuthObservable<HttpRestServer>
-
withRealm
- Specified by:
withRealmin interfaceHttpRestServer- Specified by:
withRealmin interfaceorg.refcodes.web.RealmAccessor.RealmBuilder<RestServer>- Specified by:
withRealmin interfaceRestServer
-
setPort
public void setPort(int aPort) - Specified by:
setPortin interfaceorg.refcodes.mixin.PortAccessor.PortMutator
-
getPort
public int getPort()- Specified by:
getPortin interfaceorg.refcodes.mixin.PortAccessor
-
setScheme
public void setScheme(org.refcodes.data.Scheme aScheme) - Specified by:
setSchemein interfaceorg.refcodes.web.SchemeAccessor.SchemeMutator
-
getScheme
public org.refcodes.data.Scheme getScheme()- Specified by:
getSchemein interfaceorg.refcodes.web.SchemeAccessor
-
toProtocol
- Specified by:
toProtocolin interfaceorg.refcodes.web.SchemeAccessor
-
setProtocol
- Specified by:
setProtocolin interfaceorg.refcodes.web.SchemeAccessor.SchemeMutator
-
getKeyStoreDescriptor
public org.refcodes.security.KeyStoreDescriptor getKeyStoreDescriptor()- Specified by:
getKeyStoreDescriptorin interfaceorg.refcodes.security.KeyStoreDescriptorAccessor
-
setKeyStoreDescriptor
public void setKeyStoreDescriptor(org.refcodes.security.KeyStoreDescriptor aKeyStoreDescriptor) - Specified by:
setKeyStoreDescriptorin interfaceorg.refcodes.security.KeyStoreDescriptorAccessor.KeyStoreDescriptorMutator
-
getMaxConnections
public int getMaxConnections()- Specified by:
getMaxConnectionsin interfaceorg.refcodes.io.MaxConnectionsAccessor
-
setMaxConnections
public void setMaxConnections(int aMaxConnections) - Specified by:
setMaxConnectionsin interfaceorg.refcodes.io.MaxConnectionsAccessor.MaxConnectionsMutator
-
getHttpServer
Gets the http server.- Returns:
- the http server
-
open
A hook to be used when using customHttpServer(HttpsServer) by custom open(...) methods of sub-classes of thisHttpRestServerImpl. E.gHttpRestServerImpluses this hook to pre-configure aHttpsServerfor HTTPS. The passedHttpServer(HttpsServer) must already be bound to a port and enabled with the number of concurrent connections as ofHttpServer.bind(InetSocketAddress, int).- Parameters:
aHttpServer- TheHttpServerto be used. E.g. anHttpsServermight be used to enable HTTPS.- Throws:
IOException- in case opening with the providedHttpRestServerfails.
-