- - PR -
Webアプリの二重送信対応
| 投稿者 | 投稿内容 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-28 21:43
そのオブジェクトからセッションIDという文字列が取れるメソッドがありますのでそいつの戻す文字列のintern()で同期化してください。
| ||||||||||||||||||||
|
投稿日時: 2004-05-31 14:42
お疲れ様です。
は、Enumerationの繰返し処理中にそのEnumerationの取得もとのオブジェクトを変更したりすると発生します。 ので、
の
ConcurrentModificationExceptionの発生は止められると思います。 個人的にもこの問題に興味があるので、よろしければその後の状況なども教えていただけると幸いです。 | ||||||||||||||||||||
|
投稿日時: 2004-05-31 15:24
去年の記事ですが、Protect Web application control flow というのがあります。
http://www.javaworld.com/javaworld/javatips/jw-javatip136.html 試したことはありませんが、問題なさそうに見えます。 # 追記 訂正。HttpSession の同期は必要ないか、気になります。 [ メッセージ編集済み 編集者: 顔爺 編集日時 2004-05-31 16:11 ] | ||||||||||||||||||||
|
投稿日時: 2004-06-02 21:23
返信が遅くなって申し訳ないです。
Anthyhimeさん:引用-------------------------------------------------------------- そのオブジェクトからセッションIDという文字列が取れるメソッドがありますのでそいつの戻す文字列のintern()で同期化してください。 -------------------------------------------------------------------------------- session.getId().intern()を使用して同期を取りましたが、 それでもjava.util.ConcurrentModificationException が発生します。 カヌーさん:引用----------------------------------------------------------------- 引用: ----------------------------------------------------------------------------- コード: ----------------------------------------------------------------------------- java.util.ConcurrentModificationException ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- は、Enumerationの繰返し処理中にそのEnumerationの取得もとのオブジェクトを変更したりすると発生します。 ので、 引用: ----------------------------------------------------------------------------- コード: ----------------------------------------------------------------------------- while(sessionEnu.hasMoreElements()){ String name = (String) sessionEnu.nextElement(); session.setAttribute(name + "_s_b", session.getAttribute(name)); } ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- のコード: ----------------------------------------------------------------------------- session.setAttribute() ----------------------------------------------------------------------------- をwhile文の外で行えば、 ConcurrentModificationExceptionの発生は止められると思います。 -------------------------------------------------------------------------------- そうなのですか。ちゃんとJavadocを読むべきでした。 試してみたいと思います。 顔爺さん:引用------------------------------------------------------------------- 去年の記事ですが、Protect Web application control flow というのがあります。 http://www.javaworld.com/javaworld/javatips/jw-javatip136.html -------------------------------------------------------------------------------- 記事をみたのですが、行っている処理は同じようなものなので、問題ないと 思います。 | ||||||||||||||||||||
|
投稿日時: 2004-06-03 18:18
Enumerationの繰返し処理中にそのEnumerationの取得元のオブジェクトを変更しないようにして、java.util.ConcurrentModificationException の例外は
発生しないようになりました。 しかし、今度はTomcatを起動したときに表示されるコマンドプロンプト画面に、 致命的:Error finishing response java.lang.ArrayIndexOutOfBoundsException: 32005 と表示され、原因は不明です。 やはり、2重送信対応は無理なのでしょうか? | ||||||||||||||||||||
