public class ServletScopes extends Object
Modifier and Type | Field | Description |
---|---|---|
static Scope |
REQUEST |
HTTP servlet request scope.
|
static Scope |
SESSION |
HTTP session scope.
|
Modifier and Type | Method | Description |
---|---|---|
static <T> Callable<T> |
continueRequest(Callable<T> callable,
Map<Key<?>,Object> seedMap) |
Deprecated.
You probably want to use
transferRequest instead |
static boolean |
isRequestScoped(Binding<?> binding) |
Returns true if
binding is request-scoped. |
static <T> Callable<T> |
scopeRequest(Callable<T> callable,
Map<Key<?>,Object> seedMap) |
Scopes the given callable inside a request scope.
|
static RequestScoper |
scopeRequest(Map<Key<?>,Object> seedMap) |
Returns an object that will apply request scope to a block of code.
|
static RequestScoper |
transferRequest() |
Returns an object that "transfers" the request to another thread.
|
static <T> Callable<T> |
transferRequest(Callable<T> callable) |
Wraps the given callable in a contextual callable that "transfers" the request to another
thread.
|
public static final Scope REQUEST
public static final Scope SESSION
@Deprecated public static <T> Callable<T> continueRequest(Callable<T> callable, Map<Key<?>,Object> seedMap)
transferRequest
insteadThere are some limitations:
The returned callable will throw a ScopingException
when called if the HTTP request
scope is still active on the current thread.
callable
- code to be executed in another thread, which depends on the request scope.seedMap
- the initial set of scoped instances for Guice to seed the request scope with. To
seed a key with null, use null
as the value.OutOfScopeException
- if this method is called from a non-request thread, or if the
request has completed.public static <T> Callable<T> transferRequest(Callable<T> callable)
As opposed to continueRequest(java.util.concurrent.Callable<T>, java.util.Map<com.google.inject.Key<?>, java.lang.Object>)
, this method propagates all existing scoped objects.
The primary use case is in server implementations where you can detach the request processing
thread while waiting for data, and reattach to a different thread to finish processing at a
later time.
Because request-scoped objects are not typically thread-safe, the callable returned by this method must not be run on a different thread until the current request scope has terminated. The returned callable will block until the current thread has released the request scope.
callable
- code to be executed in another thread, which depends on the request scope.OutOfScopeException
- if this method is called from a non-request thread, or if the
request has completed.public static RequestScoper transferRequest()
open()
activates the transferred the scope, including propagating any objects scoped at that time.
As opposed to continueRequest(java.util.concurrent.Callable<T>, java.util.Map<com.google.inject.Key<?>, java.lang.Object>)
, this method propagates all existing scoped objects.
The primary use case is in server implementations where you can detach the request processing
thread while waiting for data, and reattach to a different thread to finish processing at a
later time.
Because request-scoped objects are not typically thread-safe, it is important to avoid applying the same request scope concurrently. The returned Scoper will block on open until the current thread has released the request scope.
OutOfScopeException
- if this method is called from a non-request thread, or if the
request has completed.public static boolean isRequestScoped(Binding<?> binding)
binding
is request-scoped. If the binding is a linked key binding
and belongs to an injector (i. e. it
was retrieved via Injector.getBinding()
), then this method will
also return true if the target binding is request-scoped.public static <T> Callable<T> scopeRequest(Callable<T> callable, Map<Key<?>,Object> seedMap)
The returned callable will throw a ScopingException
when called if there is a
request scope already active on the current thread.
callable
- code to be executed which depends on the request scope. Typically in another
thread, but not necessarily so.seedMap
- the initial set of scoped instances for Guice to seed the request scope with. To
seed a key with null, use null
as the value.seedMap
as scoped keys.public static RequestScoper scopeRequest(Map<Key<?>,Object> seedMap)
The returned object will throw a ScopingException
when opened if there is a request
scope already active on the current thread.
seedMap
- the initial set of scoped instances for Guice to seed the request scope with. To
seed a key with null, use null
as the value.Copyright © 2006–2018 Google, Inc.. All rights reserved.