2013-03-11 58 views
3

我有一個帶有作用域會話的Spring bean。這個bean擁有對不可序列化的另一個單例bean的引用。如果我想序列化會話作用域bean,最好的方法是什麼?Spring:會話作用域bean的序列化

同樣的問題已經在這裏問:Spring session-scoped beans (controllers) and references to services, in terms of serialization

接受的答案是:

[...]這個問題是在春季3.0通過提供不可序列豆代理解決,它從當前的應用上下文中獲得一個實例

據我所知,鏈接視頻中的發言者應該「只是工作」。但在我的情況下,它不!當我嘗試序列化會話作用域bean時,我得到一個NotSerializableException

我該如何解決這個問題?

回答

-2

您可以將單身參考字段標記爲transient。然後檢查How to execute method after deserialization並從ApplicationContext加載參考。 另外,請提供堆棧跟蹤。

P.S.

使用會話鈍化並不是太好主意。

+1

爲什麼使用會話鈍化不是一個好主意? – Sebi 2013-03-15 08:44:54

+0

它只是很慢,並使用大量的IO。目前我們有很多內存 - 這足以舉行會議。 – 2013-03-15 08:47:25

+0

我接受了你的答案。但不是在所有會話範圍的bean中實現'readObject',我更喜歡這種方法:http://justonjava.blogspot.hk/2011/02/session-passivation-and-spring-part-1.html – Sebi 2013-03-15 08:48:43

1

您需要指示 Spring創建該代理。在基於XML的配置,通過<aop:scoped-proxy/>標籤,在component-scan的模式,通過註釋:

@Scope(proxyMode = ScopedProxyMode.INTERFACES) 

你的控制器類。