Class ServletModule
- java.lang.Object
-
- pl.morgwai.base.servlet.scopes.ServletModule
-
- All Implemented Interfaces:
Module
public class ServletModule extends Object implements Module
Servlet and websocket GuiceScope
s,ContextTracker
s and some helper methods. A single app-wide instance is created at app startup:GuiceServletContextListener.servletModule
.
-
-
Field Summary
Fields Modifier and Type Field Description List<ContextTracker<?>>
allTrackers
Contains all trackers.ContextTracker<ContainerCallContext>
containerCallContextTracker
Allows tracking ofServletRequestContext
s andWebsocketEventContext
s.Scope
containerCallScope
Scopes bindings to either aServletRequestContext
or aWebsocketEventContext
.Scope
httpSessionScope
Scopes bindings to the context of a givenHttpSession
.ContextTracker<WebsocketConnectionContext>
websocketConnectionContextTracker
Allows tracking of thecontext of a websocket connection (javax.websocket.Session)
.Scope
websocketConnectionScope
Scopes bindings to thecontext of a websocket connection (javax.websocket.Session)
.
-
Constructor Summary
Constructors Constructor Description ServletModule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
configure(Binder binder)
BindscontainerCallContextTracker
andwebsocketConnectionContextTracker
and corresponding contexts for injection.ContextTrackingExecutor
newContextTrackingExecutor(String name, int poolSize)
Constructs an executor backed by a new fixed sizeThreadPoolExecutor
that uses aNamedThreadFactory
and an unboundLinkedBlockingQueue
.ContextTrackingExecutor
newContextTrackingExecutor(String name, int poolSize, BlockingQueue<Runnable> workQueue)
Constructs an executor backed by a new fixed sizeThreadPoolExecutor
that uses aNamedThreadFactory
.ContextTrackingExecutor
newContextTrackingExecutor(String name, int poolSize, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)
Constructs an executor backed by a new fixed sizeThreadPoolExecutor
.ContextTrackingExecutor
newContextTrackingExecutor(String name, ExecutorService backingExecutor, int poolSize)
Constructs an executor backed bybackingExecutor
.
-
-
-
Field Detail
-
containerCallContextTracker
public final ContextTracker<ContainerCallContext> containerCallContextTracker
Allows tracking ofServletRequestContext
s andWebsocketEventContext
s.
-
containerCallScope
public final Scope containerCallScope
Scopes bindings to either aServletRequestContext
or aWebsocketEventContext
. Objects bound in this scope can be obtained both in servlets and endpoints.- See Also:
ContainerCallContext
-
httpSessionScope
public final Scope httpSessionScope
Scopes bindings to the context of a givenHttpSession
. Available both to servlets and websocket endpoints.NOTE: there's no way to create an
HttpSession
from the websocket endpoint layer if it does not exist yet. To safely use this scope in websocket endpoints, other layers must ensure that a session exists (for example aFilter
targeting URL patterns of websockets can be used).
-
websocketConnectionContextTracker
public final ContextTracker<WebsocketConnectionContext> websocketConnectionContextTracker
Allows tracking of thecontext of a websocket connection (javax.websocket.Session)
.
-
websocketConnectionScope
public final Scope websocketConnectionScope
Scopes bindings to thecontext of a websocket connection (javax.websocket.Session)
.
-
allTrackers
public final List<ContextTracker<?>> allTrackers
Contains all trackers.configure(Binder)
bindsList<ContextTracker<?>>
to it for use withContextTrackingExecutor.getActiveContexts(List)
.
-
-
Method Detail
-
configure
public void configure(Binder binder)
BindscontainerCallContextTracker
andwebsocketConnectionContextTracker
and corresponding contexts for injection. BindsList<ContextTracker<?>>
toallTrackers
that contains all trackers for use withContextTrackingExecutor.getActiveContexts(List)
.
-
newContextTrackingExecutor
public ContextTrackingExecutor newContextTrackingExecutor(String name, int poolSize)
Constructs an executor backed by a new fixed sizeThreadPoolExecutor
that uses aNamedThreadFactory
and an unboundLinkedBlockingQueue
.To avoid
OutOfMemoryError
s, an external mechanism that limits maximum number of tasks (such as a load balancer or frontend) should be used.Returned executor will be shutdown automatically at app shutdown.
-
newContextTrackingExecutor
public ContextTrackingExecutor newContextTrackingExecutor(String name, int poolSize, BlockingQueue<Runnable> workQueue)
Constructs an executor backed by a new fixed sizeThreadPoolExecutor
that uses aNamedThreadFactory
.ContextTrackingExecutor.execute(Runnable)
throws aRejectedExecutionException
ifworkQueue
is full. It should usually be handled by sendingHttpServletResponse.SC_SERVICE_UNAVAILABLE
to the client.Returned executor will be shutdown automatically at app shutdown.
-
newContextTrackingExecutor
public ContextTrackingExecutor newContextTrackingExecutor(String name, int poolSize, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)
Constructs an executor backed by a new fixed sizeThreadPoolExecutor
.ContextTrackingExecutor.execute(Runnable)
throws aRejectedExecutionException
ifworkQueue
is full. It should usually be handled by sendingHttpServletResponse.SC_SERVICE_UNAVAILABLE
to the client.Returned executor will be shutdown automatically at app shutdown.
-
newContextTrackingExecutor
public ContextTrackingExecutor newContextTrackingExecutor(String name, ExecutorService backingExecutor, int poolSize)
Constructs an executor backed bybackingExecutor
.NOTE:
backingExecutor.execute(task)
must throwRejectedExecutionException
in case of rejection forexecute(httpResponse, task)
to work properly.poolSize
is informative only, to be returned byContextTrackingExecutor.getPoolSize()
.Returned executor will be shutdown automatically at app shutdown.
-
-