2013-09-26 92 views
0

我有一套數據庫,當用戶進行身份驗證時,託管bean會記住客戶ID。該客戶ID由整套數據庫中的所有XPage使用。所有的XPage都可以切換到不同的賬戶,從而改變客戶ID。XPages Managed Bean可以在多個數據庫中工作嗎?

在切換帳戶時,已設置該數據庫的託管bean,但移動到另一個數據庫中的另一個XPage,並且該託管bean尚未更新!看起來託管bean會話範圍是數據庫特定的,但是我的情況(對或錯)意味着我必須記住跨數據庫的這個客戶id。

如何在託管bean中設置此客戶ID,以便跨數據庫記住?由於託管bean無法跨數據庫工作,因此我是否必須生成標準配置文件?

回答

1

唯一的其他選擇是當您從一個數據庫移動到另一個數據庫時,在查詢字符串中傳遞一些內容,以便您可以在其他數據庫的上下文中重新構建該Bean。如果您對Java感到滿意,Per的選項2將是前進的方向。

+0

我現在將查詢字符串中的id傳遞給XPage並且XPPage beforePageLoad將它拾取並設置bean,現在所有工作都正常了。 。 – user1753622

4

託管bean的作用域爲應用程序,會話,視圖或請求,並且這些作用域僅在單個nsf內可訪問。

你(至少?)兩個選項:

  1. 將您所有的XPages邏輯成訪問您的所有不同的後端數據庫
  2. 使用服務器級的服務器範圍是部分一個NSF XPages Starter Kit on OpenNTF

我會建議選擇1

+0

感謝您的回覆。不幸的是,我沒有將所有邏輯移動到單個數據庫的情況:o( – user1753622

0

你必須看它從兩個角度:

豆的

源代碼(邏輯):

  • 它捆綁到JAR和複製到每一個NSF
  • 使用OSGi的共享其邏輯

數據:

bean的值不共享:對於預期的應用程序,查看和請求範圍。您可能想分享會話範圍的bean。我相信你可以重新思考和改變bean的範圍到其他範圍,在其他地方保持會話範圍的屬性(cookie或數據庫)。 在這種情況下,請按照Per Henrik Lausten的建議,廣泛部署您的bean代碼服務器。

相關問題