public class ThreadSpecificProxyFactory<T> extends Object
Thread-specific proxy is used to create implementations of interfaces that delegate to a thread-specific implementation of the service.
It can be used for instance to create a contextual reference to an entity manager that delegates to a thread-specific instance.
The set(Object)
method sets the current service instance for the
current thread. The get()
method gets the current service instance
for the current thread. The getProxy()
method gets a proxy that will
delegate at runtime to the thread-specific instance. The result from this
method can be passed at construction of an object that will be used by
multiple threads.
This class is mostly used by infrastructure code (utilities) and test tools.
Care has been taken so that the invocation handler is serializable. However, it is only serializable within one virtual machine. It cannot be used in a distributed context where it can be sent to another JVM.
This class currently does not do any cleanup. So it should not be used in production code but only in test utilities.
Modifier and Type | Class and Description |
---|---|
static interface |
ThreadSpecificProxyFactory.CreationCallback<T>
Optional callback invoked to create the thread-specific object when there
is no object yet associated with the current thread.
|
Constructor and Description |
---|
ThreadSpecificProxyFactory(Class<T> aClass)
Constructs the factory.
|
ThreadSpecificProxyFactory(Class<T> aClass,
ThreadSpecificProxyFactory.CreationCallback<T> aCallback)
Constructs the factory with a callback to create thread-specific objects
automatically.
|
Modifier and Type | Method and Description |
---|---|
T |
get()
Gets the current thread-specific service.
|
T |
getProxy()
Gets the proxy that delegates to the thread-specific instance set by
set(Object) |
void |
set(T aService)
Sets the thread-specific service.
|
public ThreadSpecificProxyFactory(Class<T> aClass)
aClass
- Interface class of the service to proxy.public ThreadSpecificProxyFactory(Class<T> aClass, ThreadSpecificProxyFactory.CreationCallback<T> aCallback)
aClass
- Interface class of the service to proxy.aCallback
- Callback to create the object if it does not exist. When null,
then no initialization is done.public void set(T aService)
aService
- Service, use null value to reset.public T get()
getProxy()
.public T getProxy()
set(Object)
Copyright © 2022. All rights reserved.