1/04/2005

使用WebLogic Server叢集時, 程式寫作上要注意什麼?

在BEA快三年, 這也是常被問的問題之一! 除了需要根據WebLogic Server的規定, 在部署時做設定, 的確有些常犯的錯誤, 但當了解原理與J2EE規格後, 通常應該不會有此疑問。叢集可以容錯轉移的基本原理是, 透過網路讓不同的JVM互相溝通, 備份資料, 並且看看誰已經死了, 不要再去打擾它。

所以在Servlet/JSP寫作上, 要注意:
  1. 放到Session的資料都要Serializable, 不然怎麼備份?
  2. 只用setAttribute跟removeAttribute修改Session裡的資料, 因為WebLogic只監控這二個方法
  3. 小心放到Session的資料, 因為它需要做網路複製的動作, 會影響整體效能, 更重要的, 目前還沒有好的方法知道Session裡有哪些資料, 哪些是不Serializable, 大小, 除非買工具來做
  4. 小心使用Frames! 有可能每個開發人員都在自己的Frame裡產生Session, 而系統不會幫這些Frames做同步, 在叢集環境裡就會搞死人! 所以最簡單的方法是有一個Frameset的其中一個Frame產生Session, 之後用其他的Frameset的一個Frame來修改Session資料

對Stateless Session Bean來說, 最重要的是idempotent, 也就是同樣資料餵進去, 不管幾次, 再哪一台Server, 都有一樣的結果, 這樣就可以做容錯轉移, 像新增物品到購物籃的程式, 本質上就不行!

對Stateful Session Bean而言, 跟HTTP Session 一樣, 注意要被放的狀態需要可以序列化!

以上說明都是來自http://e-docs.bea.com/wls/docs81/cluster/failover.html#1032777 .

沒有留言: