2012-07-24 22 views
1

我在Jboss AS 5.1.0.GA下部署了一個web應用程序,在我的應用程序中,我使用了一些java.lang.Threadlocal變量。根據定義,java.lang.Threadlocal變量應該在線程執行結束時清除。在應用程序服務器的情況下,由於其使用線程池,因此不會清除java.lang.Threadlocal變量。有沒有什麼辦法可以配置jboss在線程執行結束時清除ThreadLocal變量?

你知道如何配置Jboss AS 5來清除這些java.lang.Threadlocal varibles?我已經爲此搜索了Google,但沒有發現任何有趣的內容。我在尋找Jboss 5而不是Jboss 6的解決方案。

+0

它是一個Web應用程序或EJB?如果它是一個web應用程序,你應該能夠添加一個清除它的ServletFilter。對於EJB,我認爲對攔截器有一些支持。 – gkamal 2012-07-24 13:18:04

+0

這是一個web應用程序,我不認爲開發人員必須管理這個。如果我使用'tomcat'部署我的應用程序,我沒有任何問題,變量被清除/無效這就是爲什麼我要配置此(例如在一個xml文件中) – mabbas 2012-07-24 13:23:14

回答

0

你從jboss得到任何日誌記錄爲什麼threadlocal不能被刪除?如果出現這樣的問題,我會感到驚訝。

+0

沒有在jboss服務器日誌中沒有錯誤,我已經驗證。 – mabbas 2012-07-24 13:13:05

+1

您可以嘗試將日誌語句添加到未清理的threadlocal的remove方法中。這樣,你確信清理不會發生。如果是這樣,首先在jboss端記錄一個錯誤報告,看看他們是否有解決方法。 – 2012-07-24 13:22:10

+0

除非我錯誤閱讀錯誤報告,否則這已經在4.2.3中修復了。 https://issues.jboss.org/browse/JBAS-8389它甚至與OP使用的措辭相同。 – 2012-07-24 14:09:54

0

您可以創建ContextListener並覆蓋onContextDestroyed或創建servlet和覆蓋destroy方法,在重寫的方法清理線程

+0

我不認爲開發人員必須管理這個。如果我使用'tomcat'部署我的應用程序,我沒有任何問題,變量被清除/無效這就是爲什麼我想要配置它(例如在一個XML文件中) – mabbas 2012-07-24 13:23:05

相關問題