seam中使用多執行緒的問題

940609296發表於2008-11-25
我用的seam架構的專案,目前想在系統中讓伺服器啟動後就自動啟動一個多執行緒的任務。
我現在用的seam元件類A的一個方法去迴圈例項化多個繼承自Thread的執行緒類B,而執行緒類中的run方法又呼叫了A的一些資料儲存方法。所以我在B中例項化了A類,我試了三種方式,
1:以new 關鍵字例項化
2:Component.getInstance("XXX",true);
3:@In(value="XXX",create=true)

第二種和第三種方式我執行就報空指標,類沒有被例項化。而以第一種方式例項化後,A類所牽涉的seam元件類中的資料庫操作有時候會報錯,有時候又不會。我估計是seam的事務被打亂的原因,報了很多奇怪的錯,比如我query.getResultList()的時候,報連線已經關閉,而另外的類裡有時會報得到的List是空。而對於我用執行緒查詢出來的集合我把操作集合方法註釋後報could not read column value from result set: BATCHS; ORA-01001: 無效的遊標。而程式偶爾跑得很正常,該更新的更新,該刪除的刪除。但是大多時候,是在不固定的地方,報操作過程中用的seam元件的引用為空指標。

還請各位高手指點一下

相關文章