2015-11-28 56 views
1

我正在考慮使用Singleton會話來爲我們的應用程序寫請求日誌。休眠:使用單身會話來寫日誌(不刷新)

通常我會使用Hibernate與Lifestyle PerWebRequest,但在我的具體情況下沒有Http上下文(我們使用套接字線程來偵聽請求)。但是我注意到,由於我們只使用會話來記錄日誌,我可以使用一個單例 Hibernate會話以及

即使多線程運行會話,所有請求日誌都會在會話中加起來,並在Hibernate感覺舒適時得到保存。沒有必要在之後立即閱讀日誌,這樣才能工作。

的代碼將是這樣的:

// Got socket request 
// Doing some stuff here, saving to a legacy database (cannot use Hibernate with this one) 

var logging = new Message(info); 
loggingService.save(logging); // FYI: in case it fail, we don't want to roll back the previous work 

我唯一擔心的是,當我們想要做負載均衡與多臺機器上運行2程序,那麼它可能是一個問題。我認爲在這種情況下,我們必須做一些鎖定/同步以避免可能的衝突(儘管我現在無法想到)。

單身人士會議可以使用嗎,或者有沒有想過的可能的影響?

回答

0

這個利用Singleton Session的「精彩」想法花了我好幾天的時間來清理混亂。起初它會產生很好的結果,但是會產生許多不可預知的錯誤。

現在我可以確認Session並不是爲這樣的事情設計的。 我正在選擇刪除此問題,但隨後決定將其留給任何擁有相同「精彩時刻」的人。

TL; DR:我建議大家堅持「好老路」:一個線程 - 一個會話。