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 java.lang.Object implements org.zkoss.zk.ui.event.EventThreadInit, org.zkoss.zk.ui.event.EventThreadCleanup, org.zkoss.zk.ui.event.EventThreadResumeListener 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
-
-
Constructor Summary
Constructors Constructor Description ThreadLocalListener()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidabortResume(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)voidafterResume(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)voidbeforeResume(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)voidcleanup(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt, java.util.List errs)voidcomplete(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)booleaninit(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)voidprepare(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)
-
-
-
Method Detail
-
prepare
public void prepare(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)- Specified by:
preparein interfaceorg.zkoss.zk.ui.event.EventThreadInit
-
init
public boolean init(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)- Specified by:
initin interfaceorg.zkoss.zk.ui.event.EventThreadInit
-
cleanup
public void cleanup(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt, java.util.List errs)- Specified by:
cleanupin interfaceorg.zkoss.zk.ui.event.EventThreadCleanup
-
complete
public void complete(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)- Specified by:
completein interfaceorg.zkoss.zk.ui.event.EventThreadCleanup
-
beforeResume
public void beforeResume(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)- Specified by:
beforeResumein interfaceorg.zkoss.zk.ui.event.EventThreadResume
-
afterResume
public void afterResume(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)- Specified by:
afterResumein interfaceorg.zkoss.zk.ui.event.EventThreadResume
-
abortResume
public void abortResume(org.zkoss.zk.ui.Component comp, org.zkoss.zk.ui.event.Event evt)- Specified by:
abortResumein interfaceorg.zkoss.zk.ui.event.EventThreadResume
-
-