「資格試験/情報処理技術者試験/情報セキュリティスペシャリスト/過去問2013年春午後2/問1設問3-3」の編集履歴(バックアップ)一覧に戻る

資格試験/情報処理技術者試験/情報セキュリティスペシャリスト/過去問2013年春午後2/問1設問3-3 - (2013/09/01 (日) 23:53:18) の編集履歴(バックアップ)


設問3 予約管理機能の不具合について(1)~(4)に答えよ。

(3) 図9を完成させるために、【s】~【u】に入れる適切な字句又は数字を答えよ。
a郡 b郡
【s】 Status=? LastUpdate=?
【t】 psUp.setInt(10, revStatus); psUp.setLong(10, lastDateTime);
【u】 1 1

解説

排他制御に関する問題です。

本文抜粋

[予約管理機能における不具合の修正]
 Sグループのリーダとしてソースコードレビューに参加していたT主任は、この不具合を修正するために、executeUpdateメソッドでUPDATE文を実行した時、更新した行数が戻り値になることに着目した。そして、図5の25行目のパラメタ付きSQLのWHERE句を修正した上で、図5の60行目のexecuteUpdateメソッドの実行時に異常の発生を検知する仕組みを提案した。この提案に基づき修正されたプログラムは図9のとおりである。

図9 修正されたサーブレット"WakuClick"

1~23:(省略)[図5の1~23と同じ]
24:        psSel = conn.prepareStatement("SELECT * FROM rsvList WHERE rsvDate=? AND rsvTime=? AND Biyoshi=?");
25:        psUp = conn.prepareStatement("UPDATE revList SET Status=?, CustID?, Message=?, Menu=?, LastUpdate=? WHERE rsvDate=? AND rsvTime=? AND Biyoshi=?AND CustID=? AND 【s】");
26:
27~46:(省略)[図5の27~46と同じ]
47:        int rsvStatus = rs.getInt("Status");
48:       String rsvCustID = rs.getInt("CustID");
49:       if (rsvStatus == RSV_KARI) {
50:           // 予約状況が空きであることを確認し、仮予約処理を行う
51:           (省略)[予約リストを適切に更新し、仮予約処理を行う]
52:       } else if (rsvStatus == RSV_KARI && ((nowDateTime - lastDateTime)> TIMEOUT_KARI)){
53:           // 既に仮予約状態であっても、TIMEOUT_KARI経過後なら、自分の仮予約に変更する
54:            psUp.setInt(1, RSV_KARI); psUp.setString(2, loginUserID); psUp.setString(3, "");
55:            psUp.setString(4, ""); psUp.setLong(5, nowDateTime);
56:            psUp.setString(6, rsvDate);
57:            psUp.setString(7, rsvTime); psUp.setString(8, rsvBiyoshi);
58:           psUp.setString(9, rsvCustID); 【t】;
59:           if (psUp.executeUpdate() == 【u】) {
60:                (省略)[図6の処理を引き継ぐために、選択した予約枠の情報をサーブレットのセッション情報に保存する]
61:                (省略)[画面3のHTML出力を行う]
62:           } else {
63:               (省略)[予約失敗の画面のHTML出力を行う]
64:           }
65:        } else {
66~71:(省略)[図5の64~69と同じ]
注記1 SQL例外を含め、例外処理については省略している。省略した部分で必要とするクラスに関わるimportの記述も省略している。
注記2 下線は、修正した部分を表す。
注記3(省略)[・・・]は、その位置に[]内に示す処理が記述されているが、省略していることを示す。

図9 修正されたサーブレット"WakuClick"終わり