| java.lang.Object org.picocontainer.behaviors.AbstractBehaviorFactory org.picocontainer.gems.adapters.ThreadLocalizing
ThreadLocalizing | final public class ThreadLocalizing extends AbstractBehaviorFactory (Code) | | A
ComponentFactory for components kept in
ThreadLocal instances.
This factory has two operating modes. By default it ensures, that every thread uses its own component at any time.
This mode (
ThreadLocalizing.ENSURE_THREAD_LOCALITY ) makes internal usage of a
ThreadLocalized . If the
application architecture ensures, that the thread that creates the component is always also the thread that is th
only user, you can set the mode
ThreadLocalizing.THREAD_ENSURES_LOCALITY . In this mode the factory uses a simple
Cached that uses a
ThreadLocalReference to cache the component.
See the use cases for the subtile difference:
THREAD_ENSURES_LOCALITY is applicable, if the pico container is requested for a thread local addComponent
from the working thread e.g. in a web application for a request. In this environment it is ensured, that the request
is processed from the same thread and the thread local component is reused, if a previous request was handled in the
same thread. Note that thi scenario fails badly, if the thread local component is created because of another cached
component indirectly by a dependecy. In this case the cached component already have an instance of the thread local
component, that may have been created in another thread, since only the component adapter for the thread local
component can ensure a unique component for each thread.
ENSURES_THREAD_LOCALITY solves this problem. In this case the returned component is just a proxy for
the thread local component and this proxy ensures, that a new component is created for each thread. Even if another
cached component has an indirect dependency on the thread local component, the proxy ensures unique instances. This
is vital for a multithreaded application that uses EJBs.
author: Jörg Schaible |
Field Summary | |
final public static boolean | ENSURE_THREAD_LOCALITY ENSURE_THREAD_LOCALITY is the constant for created
ComponentAdapter instances, that ensure
unique instances of the component by delivering a proxy for the component. | final public static boolean | THREAD_ENSURES_LOCALITY THREAD_ENSURES_LOCALITY is the constant for created
ComponentAdapter instances, that
create for the current thread a new component. |
Constructor Summary | |
public | ThreadLocalizing() Constructs a wrapping ThreadLocalizing, that ensures the usage of the ThreadLocal. | public | ThreadLocalizing(ProxyFactory proxyFactory) Constructs a wrapping ThreadLocalizing, that ensures the usage of the ThreadLocal. | public | ThreadLocalizing(boolean ensure) Constructs a wrapping ThreadLocalizing. | protected | ThreadLocalizing(boolean ensure, ProxyFactory factory) Constructs a wrapping ThreadLocalizing. |
ENSURE_THREAD_LOCALITY | final public static boolean ENSURE_THREAD_LOCALITY(Code) | | ENSURE_THREAD_LOCALITY is the constant for created
ComponentAdapter instances, that ensure
unique instances of the component by delivering a proxy for the component.
|
THREAD_ENSURES_LOCALITY | final public static boolean THREAD_ENSURES_LOCALITY(Code) | | THREAD_ENSURES_LOCALITY is the constant for created
ComponentAdapter instances, that
create for the current thread a new component.
|
ThreadLocalizing | public ThreadLocalizing()(Code) | | Constructs a wrapping ThreadLocalizing, that ensures the usage of the ThreadLocal. The Proxy
instances are generated by the JDK.
|
ThreadLocalizing | public ThreadLocalizing(ProxyFactory proxyFactory)(Code) | | Constructs a wrapping ThreadLocalizing, that ensures the usage of the ThreadLocal.
Parameters: proxyFactory - The ProxyFactory to use. |
Methods inherited from org.picocontainer.behaviors.AbstractBehaviorFactory | public ComponentAdapter<T> addComponentAdapter(ComponentMonitor componentMonitor, LifecycleStrategy lifecycleStrategy, Properties componentProperties, ComponentAdapter<T> adapter)(Code)(Java Doc) public ComponentAdapter<T> createComponentAdapter(ComponentMonitor componentMonitor, LifecycleStrategy lifecycleStrategy, Properties componentProperties, Object componentKey, Class<T> componentImplementation, Parameter... parameters) throws PicoCompositionException(Code)(Java Doc) protected void mergeProperties(Properties into, Properties from)(Code)(Java Doc) public static boolean removePropertiesIfPresent(Properties current, Properties present)(Code)(Java Doc) public ComponentFactory wrap(ComponentFactory delegate)(Code)(Java Doc)
|
|
|