2014-04-08 47 views
0

我有兩個門戶網站項目的WebSphere動態緩存脫鹽問題

PROJECT1

項目2

我這是在上述兩個項目中使用的共享庫(sharedLibrary.jar)集。我的共享庫用於查找動態緩存並從中設置/獲取數據。

我設置一個我自己的豆豆(說它是com.test.UserBean)從項目1

從項目的凌晨2點

現在試圖檢索豆DYNA緩存(com.test.UserBean)來自緩存。當我這樣做時,我得到了classCastException。

但是當我分配它像它下面我展示該對象是com.test.UserBean

對象OBJ = distributedMap.get(); 我的bean實現Serializable接口並有一個serialVersionUID字段。

我不知道這裏發生了什麼。這是一個類加載器問題/別的。

任何人都可以在這方面更多的瞭解嗎?

+0

你是如何部署共享庫的?另外,你可以發佈完整的堆棧跟蹤嗎? – DanielBarbarian

回答

1

這不太可能是序列化問題,更可能是類加載器問題。

如果該類是由一個單一的通用類加載器通過兩個portlet web應用程序真正加載,則可以通過DynaCache共享實例。

然而,如果2 不同類加載器被用於從相同的.jar(在磁盤上)加載相同的.class並且兩個應用程序共享的單個實例(例如,經由動態緩存分佈式地圖)你會遇到ClassCastException - 儘管如您所見,myInstance.getClass().getName()會產生相同的字符串。

要確認這一點,您可以enable a service並使用WebSphere classloader viewer。這可以讓你,每個模塊,解決你的「兩個類加載器,一個類」的問題。信息中心文檔中有一個配套文檔,它會引導您完成troubleshooting process。類加載器查看器將顯示哪個.jar和哪個類加載器用於在每個模塊中加載com.test.UserBean。例如,您可能意外地將該jar打包在一個而不是另一個的WEB-INF/lib中,並且啓用了父 - 最後一個類加載。

+0

謝謝scotth ..你的建議有很大幫助.. – Arajit