我剛在我的服務器管道中添加了一個ExecutionHandler
,就在我的主要業務邏輯處理程序之前,正如文檔中所建議的那樣。Apache Shiro集成和Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor
爲了安全起見,我使用Apache Shiro http://shiro.apache.org/。它工作得很好,直到我加入了ExecutionHandler
。
問題:
四郎的執行上下文被綁定到你獲得Subject
對象當前線程。因此,如果在工作線程中獲得Subject
,但業務邏輯在獨立的ExecutionHandler
託管線程中執行,則兩個執行上下文不會連接到Shiro所關注的位置。因此,在ExecutionHandler
線程中的Shiro將不會意識到Subject
實際上已被認證。所以我得到認證錯誤。
將給定的Subject
與Runnable
關聯起來,然後將其傳遞給Executor.execute()
以便保持安全上下文是可能的。請參閱:http://shiro.apache.org/subject.html
基於此,我認爲需要找到一種方法來將當前Shiro Subject
與ExecutionHandler
Runnable
相關聯。
我仍試圖完全理解ExecutionHandler
和OrderedMemoryAwareThreadPoolExecutor
的實現。
基本上我需要在aRunnable
傳遞給之前撥打subject.associateWith(aRunnable)
。
有沒有人有想過在何處/如何將四郎掛入混音?
謝謝, 馬特
看看你如何整合shiro和Netty會很有趣。如果它是開源的,你能分享鏈接嗎?也許粘貼它作爲github的要點。 – Abe 2012-05-14 06:45:13