読書会(EJBデザインパターン)第3回議事録

[ 戻る ]


"EJBデザインパターン"を読む会 第3回議事録

開催日時:2004年3月20日(土) 9:00 〜 16:30
開催場所:江戸川区船堀の「タワーホール船堀407号室」(総合区民ホール)
参加者(敬称略):根本、金井、村山、門脇、高橋(智)、
         西野、高橋(徹)、坂本、宮本、吉村、村上
読み手:高橋(智)、吉村
書記:村上

■ P92 Version Number(更新先データの整合性確認)より
 - サーバ側の最新データに基づいての確認
   -> 確認の結果データが違っていたら、通例ユーザ例外をスロー。
 - 楽観的並行制御(Optimistic Lockingの訳)- CVSでも使われている。
 - EJBのreentrant Yes とされているケースは見たことがない。
 - バージョン番号以外の実装例 - タイムスタンプ プラス 乱数等もあり。
 - 独立性レベルとはJDBC で指定するアイソレイション・レベルのこと。
 - バージョン番号を使わず、全項一致のwhere句を書く手もあり。
   -> ただこれはBLOBを含む場合は使えない。
 - バージョン番号、後付は難しい。

■ P97 JDBC for Reading(N+1回呼び出し問題の解)
 - 環状(Circularの訳)あまり使われていない。
 - 複数のエンティティBean間の関連をたどる
  -> CMR(Comtainer Managed Relationship)のこと。
 - EJBアンチパターンにこのパターンとりあげられていた。
 - APサーバとDBサーバが別マシンの際のオーバーヘッド大きいよね。
   -> RAID JDBC が注目されている。
 - O/Rマッピング、オーバーヘッドが大きい。
 - DAOというロジックとJDBCを分離するパターンあり。
 - DDの設定で Read-OnlyのエンティティBeanを作る手もある。

■ P102 Data Access Command Bean(永続化ロジックとストアの詳細を分離)
 - エンタープライズBeanとは? EJBとは違うようだ。
 - 図3.3 DACBの例で点線 "利用"とあるが"依存"ではないか?
 - p104 のコード中 insEmp.execute()抜けている。
 - p105 のコード中
        Vector employees = new Vector(); と
        while loop中のemployee.add(anEmployee) が抜けている
 - P241のコードthis.release は finally句に記述しないといけない。
 - 抽象クラスはイタリック、継承は点線ではなくて実線を使いましょう。
 - PreparedStatementを使うことはよいことだ。re: MJP SQLインジェクション予防等。

■ P109 Dual Persistence Entity Bean(CMPとBMPの両方をサポート)
 - 図3.5 の右側 AccountBMPBeanのentityContext は不要(誤植?)。
 - P252のAccountBMPBeanコード、Vector を使っている。
 - EJB サーバ 普通は、VectorもArrayListも受け取れる実装になっているはず。
 - VectorもパフォーマンスがOKならば使える。
 - このパターンだと、テストの手間増えるよね...
 - CMPのよい例え、車のオートマ、パワステ。

■ P114 EJBHomeFactory(EJBHomeのキャッシュ)
 - P257のコード、ホームのキャッシュとしてCollection.synchronizedMap()を使っ
ている。
 - ホームのキャッシュ、フェールオーバの時は良いが、ラウンドロビンのケースは?
 - InitialContextの実装の中で、キャッシュしているケースあり。
 - 同じEJBをJNDI名が異なる名前でDeployできるか?その意図は?

■ P120 Business Delegate(EJB層とクライアントの独立性を高める)
 - SFSB の場合、サーバ落ちたらどうなるのか?
  -> lookup/create し直して、それでもだめなら例外を投げるのかな。
  -> Template Method、AOP が使えそう。
  -> Retryはコードが難しくなる。(catch文の中にtryがネストされていくとか)
  -> Retry可能かどうかはI/Fを見ただけでは分からない。
  -> システムつくる時に、Tx別に入り口からシナリオを設計する。
  -> 中間層で再実行処理するよりはユーザ層に戻すことが多い。
  -> 金融等は送金している途中で、銀行が倒産するケース等の対応必要。
  -> 例外設計の良い本はないか。
 - ServletSessionとは?原著はthe ServletSession(イタリック)になっている。
 - EJBハンドルオブジェクト
  -> CorbaのIOR(オブジェクト・リファレンス)的なもの。
 - getHandle() はサーバベンダーの実装依存。
 - EJBObject はSerializableではない理由。
  -> 実行しているプロセス固有の情報(ID、キー、ポート番号等)が含まれる為。
 - Corba のIOR実装依存、ポート番号固定可。JBossはどうか?
 - doGet/doPost中でSessionをとったらsynchronize で囲む。
 - IE、ダブルクリック/新しいWindow起動でSessionの持ち方変わる。
 - ネスケは1つのプロセスで動いている。
 - VB 等から(ActiveX経由C++/Corbaで)EJBを呼び出すケース、GPS 地図等あり。
 
※ 次回 Chapter5のあたまから
 
村上 記


[ 戻る ]