您可以使用(Holder類以線程綁定的RequestAttributes對象的形式公開Web請求),以使會話作用域的代理bean可用於子線程。
定義自定義ExecuteAndWait攔截並在doIntercept方法使用下面的靜態方法從RequestContextHolder
公共靜態無效setRequestAttributes(RequestAttributes屬性,布爾可繼承)
綁定給定RequestAttributes到當前線。
參數: 屬性 - 在RequestAttributes暴露,或空重置線程綁定的語境 可繼承 - 是否暴露RequestAttributes爲可繼承的子線程(使用的InheritableThreadLocal)
樣品代碼
public class CustomExecuteAndWaitInterceptor extends ExecuteAndWaitInterceptor {
@Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
RequestAttributes requestAtteiAttributes = RequestContextHolder.getRequestAttributes(); //Return the RequestAttributes currently bound to the thread.
RequestContextHolder.setRequestAttributes(requestAtteiAttributes, true);
//do something else if you want ..
return super.doIntercept(actionInvocation);
}
}
當然,當您的子線程需要訪問該bean時,會話可能已被用戶銷燬。可能需要重新審視您的範圍。 – 2013-10-29 21:24:56