2009-04-07 39 views
1

我有一個系統,我需要distrubte的作品如下。由tomcat服務的Servlet啓動併產生大量共享(分佈式)字段的線程。 Ergo,我將線程設置爲根,並嘗試從我的servlet構造函數中正常產生線程。但是,日誌表明我試圖共享構造函數的Runnable永遠不會結束。什麼會造成這種情況?關於兵馬俑和Servlets /共享線程

在我的servlet中,我有一個線程實例,我試圖以root身份共享,並且日誌表明一切都很好,直到實現runnable的類(UpdaterThread)的構造函數結束。

我有以下幾點:

的Servlet:

打印 「創建新線程」; updaterThread = new UpdaterThread(args); 打印「啓動線程」。 new Thread(updaterThread).start();

現在,我從來沒有在我的tomcat控制檯輸出中看到「啓動線程」,儘管我可以看到所有的打印語句直到UpdaterThread構造函數的末尾。 UpdaterThread維護對一個映射(由servlet共享),一個String,一個SQL連接,一個Statement,一個ReentrantReadWriteLock,一個Long以及一個臨時布爾值和Long不被共享的引用。

在UpdaterThread的構造函數中,我傳遞了對共享映射和字符串值的引用。沒有陶器啓用,我可以超越這一點。什麼會導致tomcat和兵馬俑掛沒有任何形式的錯誤信息?在調用後面的方法之前,不會使用rrwl鎖,但在程序執行過程中,我永遠不會那麼做。幫幫我?

回答

2

已解決。我不得不重新啓動Terracotta服務器,然後讓我看到錯誤,指出Statement和Connection是需要暫時生成的不可移植類。