読書会(More Java Pitfalls)第7回議事録
[ 戻る ]
"More Java Pitfalls"を読む会 第7回議事録
開催日時:2003年11月29日 10:00 〜 17:00
開催場所:目黒区東山住区センター第3集会室
参加者(敬称略):高橋(智)、村上、根本、門脇、村山、岡本、宮本、金井、
高橋(徹)
自己紹介:省略
書記:高橋(徹)
読み手:順番に輪読
■Item37: J2EE Architecture Consideration
ここは、Item26の文章がコピー&ペーストされている。
mapping:監視画面とかを指すか?
timeline:時系列グラフとかを指すか?
J2EEの古い図と新しい図の違い:新しい図では、Fire Wallが含まれ、直接EJB
をたたくクライアントが追加されている。
黄色の層とあるが、書籍では図は白黒になっている。多分EJB層。
JDBC3.0はJDK1.4から搭載されており、主な機能向上点は以下
・プライマリーキーのーオートインクリメント
・ロールバックのチェックポイント追加
EJBではメソッド単位で実行権を設定できる(xmlで記述)
リライアビリティ:勘定系では、今までハンドコードしていた。例えば、振替
処理。EJBでは、CMP(コーディング不要)、BMP(コーディング必要)。SQLでも、
しこしこ書かねばならない処理。
EJB市場:コンソーシアムはあるが、部品が売買されている話はあまり聞かな
い。EJBが必要となる大企業システムでは、固有の業務フローがあって市場に
ならないのではないか?
■Item38: Design Strategies for Eliminating Network Bottleneck
Pitfalls
書籍「EJBデザインパターン」はいい本である。2800円。
EJBコマンドパターンもvoid execute()だ。コマンド実行結果はコマンドクラ
スのフィールドに格納している。
■Item39: I'll Take the Local
SOAPはフォーマット(封筒)、通信は規定していない。だから、SOAP/HTTPや、
SOAP/IIOPといったものがある。
JAXMServletは、javax.xml.messageパッケージにある
リスト39.1の77行目は誤記:objではなく、soapHome
narrowメソッドとは何か?
→CORBAではおなじみ。objには、CORBAのインプリメーテションクラスのイン
スタンスが格納されているので、Javaのキャストでは実際にはキャストできな
い。
リスト39.1は84行目の前に、facを取得するコードが必要。
fac = MessageFactory.newInstance();
リスト39.2の5行目は誤記:soapHmではなくobj
このあとnarrowしてもよい。そうすれば、ローカルとリモートで同じコードに
できる。
以前のJBossやWebLogicでは、同一VM上のRMI呼び出しの場合にシリアライズせ
ずに直接呼び出しに置き換えていた(最適化)。そのため、ローカルEJBは不要
ではないかという議論があったそうである。
p.348のclustering multiple "combined" application serverの意味は?
+---+
+---->|AP | Webコンテナ+EJBコンテナ(ローカルEJB OK)
| +---+
| +---+
+---+ +---->|AP |
| |------+ +---+
+---+ | :
ロード | +---+
バランサ +---->|AP |
+---+
■Item40: Image Obsession
特に議論なし
■Item41: The Problem with Multiple Concurrent Result Sets
query builderとは何か固有の製品か?
JDBCドライバの実行時における2つの選択肢
(1) ResultSetを受け取った時に全てのクエリ結果を一度にバッファに入れる
(2) ResultSetを受け取った時はデータは空で、next()を呼んだ時に、その分
だけDBMSから送られてくる
(1)は、数百万行のクエリーを受け取るとメモリ不足になる。
(2)は、複数のResultSetを扱うのに難がある
■Item42: Generating Primary Keys for EJB
結局どの方式がよいの?
著者は、データベース自動生成アプローチを推奨。
→バックアップから復元したものと現存のデータを混ぜるときなど問題あり
■Item43: The Stateful Stateless Session Bean
特に議論なし
■Item44: The Unprepared PreparedStatement
PreparedStatementでパラメータStringを入れるときは、JDBC側でエスケープ
してくれるため、SQLインジェクションの防止が可能。
※StatementでStringを結合する場合は、プログラマがエスケープしないとSQL
インジェクションを防止できない
リスト44.3の29行目は誤記:PreparedStatementの型を削除(ローカル変数では
ないため)
コネクションプーリングを考えると、PreparedStatementの意義はないのでは?
■休憩中の話題
当日たまたまノートPCを持ち込んだ人(5人)は、すべてThinkpadであった。
どうしてThinkpadがいいの?
→キーボードがよい、 部品を個人で取り寄せできる点がよい
UMLツール Judeのデモ
[ 戻る ]