org.zkoss.zkplus.util
Class ThreadLocalListener
java.lang.Object
org.zkoss.zkplus.util.ThreadLocalListener
- All Implemented Interfaces:
- org.zkoss.zk.ui.event.EventThreadCleanup, org.zkoss.zk.ui.event.EventThreadInit, org.zkoss.zk.ui.event.EventThreadResume
public class ThreadLocalListener
- extends Object
- implements org.zkoss.zk.ui.event.EventThreadInit, org.zkoss.zk.ui.event.EventThreadCleanup, org.zkoss.zk.ui.event.EventThreadResume
Listener to make sure servlet thread and ZK event thread got the same ThreadLocal values. You
have to declare this listener in WEB-INF/zk.xml as follows.
<listener>
<description>ThreadLocal Synchronization Listener</description>
<listener-class>org.zkoss.zkplus.util.ThreadLocalListener</listener-class>
</listener>
Besides that, you have to specify what ThreadLocal variables you want to sync. They are also
specified in WEB-INF/zk.xml file in the form as below.
<preference>
<name>ThreadLocal</name>
<value>
class1=field1,field2,...;
class2=field1,field2,...;
...
</value>
</preference>
For example, to support synchronizing Spring's thread bounded resources, you have to specify the following
ThreadLocal variables:
<preference>
<name>ThreadLocal</name>
<value>
org.springframework.transaction.support.TransactionSynchronizationManager=resources,synchronizations,currentTransactionName,currentTransactionReadOnly,actualTransactionActive;
org.springframework.orm.hibernate3.SessionFactoryUtils=deferredCloseHolder;
org.springframework.transaction.interceptor.TransactionAspectSupport=transactionInfoHolder; <!-- ver. 2+ -->
<!--org.springframework.transaction.interceptor.TransactionAspectSupport=currentTransactionInfo; ver. 1.28 -->
</value>
</preference>
In additions to using the application preference, you can specify it
in the library property called zkplus.util.ThreadLocalListener.fieldsMap.
The preference has the higher priority.
Another example, when you specify the Spring's bean as scope="session", you have to specify the following
ThreadLocal variables since Spring 2.0 use RequestContextHolder to handle the bean's scope.
<preference>
<name>ThreadLocal</name>
<value>
org.springframework.web.context.request.RequestContextHolder=requestAttributesHolder,inheritableRequestAttributesHolder;
</value>
- Since:
- 2.4.1
- Author:
- henrichen
|
Method Summary |
void |
abortResume(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
|
void |
afterResume(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
|
void |
beforeResume(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
|
void |
cleanup(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt,
List errs)
|
void |
complete(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
|
boolean |
init(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
|
void |
prepare(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ThreadLocalListener
public ThreadLocalListener()
prepare
public void prepare(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
- Specified by:
prepare in interface org.zkoss.zk.ui.event.EventThreadInit
init
public boolean init(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
- Specified by:
init in interface org.zkoss.zk.ui.event.EventThreadInit
cleanup
public void cleanup(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt,
List errs)
- Specified by:
cleanup in interface org.zkoss.zk.ui.event.EventThreadCleanup
complete
public void complete(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
- Specified by:
complete in interface org.zkoss.zk.ui.event.EventThreadCleanup
beforeResume
public void beforeResume(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
- Specified by:
beforeResume in interface org.zkoss.zk.ui.event.EventThreadResume
afterResume
public void afterResume(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
- Specified by:
afterResume in interface org.zkoss.zk.ui.event.EventThreadResume
abortResume
public void abortResume(org.zkoss.zk.ui.Component comp,
org.zkoss.zk.ui.event.Event evt)
- Specified by:
abortResume in interface org.zkoss.zk.ui.event.EventThreadResume
Copyright © 2014. All rights reserved.