[Seasar-user:21530] Re: dbsessionでの重複エラーについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2012年 12月 19日 (水) 09:05:24 JST


小林 (koichik) です.

synchronized で回避と言っても、性能面でも
信頼性の面でもちゃんとしたものを作るには
それなりの時間がかかってしまいますし、
Seasar2 の現状では、そのような機能を追加
することになるとは考えにくいです。

それよりは、すでに実績があるもの (Web コンテナの
セッションレプリケーション) を選ぶ方が無難では
ないかと思います。

> 既に本番稼働しており、
> なるべく影響が少ないように対応したいと考えています。

ということであれば、泥縄的ですが、

> > > 1.画面Aで複数枚の画像をアップロードし、DBに画像を登録。

この時点で、画像がリクエストされたときにセッションに
加えているオブジェクト (重複エラーになっているもの) を、
ダミーでもいいので HTTP セッションに加えてしまっては
いかがでしょうか?
そうすれば、画像のリクエストでは INSERT ではなく UPDATE に
なるので、エラーにはならないのではないかと思います。


Date: Mon, 17 Dec 2012 13:46:42 +0900
From: TAKAYUKI ABIRU <a.br.taka @ gmail.com>
Subject: [Seasar-user:21529] Re: dbsessionでの重複エラーについて

> 小林様
> 返信、ありがとうございます。
> 
> 既に本番稼働しており、
> なるべく影響が少ないように対応したいと考えています。
> セッションレプリケーション機能を他のものに変更するしか方法はないでしょうか?
> 
> 例えば、SessionStateManager#updateStateの実装クラスに対して、
> synchronizedすることで回避できないでしょうか?
> 
> 以上です。よろしくお願い致します。
> 
> 
> 
> 
> 
> 2012年12月15日 15:15 Koichi Kobayashi <koichik @ gmail.com>:
> 
> > 小林 (koichik) です.
> >
> > DbSession としては、同じセッションへの複数の
> > リクエストを排他制御する機能は提供していません。
> > そのため、セッションへのアクセスが必要なリクエストが
> > 同時に発生する状況を避けられないのであれば、
> > DbSession は使えないということになると思います。
> >
> > Web コンテナが提供するセッションレプリケーションを
> > 使った方がいいかもしれませんね。
> >
> >
> > Date: Tue, 11 Dec 2012 23:00:43 +0900
> > From: TAKAYUKI ABIRU <a.br.taka @ gmail.com>
> > Subject: [Seasar-user:21524] dbsessionでの重複エラーについて
> >
> > > いつもお世話になっています。阿比留と申します。
> > >
> > > sastruts環境でseasarのdbsesseion機能を利用しております。
> > >
> > > このdbsessionで重複エラーが発生したため調査したところ、
> > > 下記の状況が分かりました。
> > >
> > > 1.画面Aで複数枚の画像をアップロードし、DBに画像を登録。
> > >
> > > 2.画面A遷移後、画面Bにて登録した画像を全て再表示。
> > > 画像はimgタグを使ってDBから取得。
> > >
> > > 3.2の画面Bの表示と同時に、サーバ側では画面Aのセッション情報がDBに登録されるのですが、
> > > 画面Bの画像表示後のセッション情報も後追いで発生し、s2sessionテーブルにて重複エラーが発生。
> > >
> > > (また、これとは別で、ajaxで処理した際も重複エラーが発生することを確認しています。)
> > >
> > > このように、ほぼ同時にリクエストが発生した場合、
> > > dbsessionでの重複エラーを回避方法はあるのでしょうか?
> > >
> > > 良い対応方法が見つからずに困っています。何か助言頂ければ助かります。
> > >
> > > 以上です。よろしくお願い致します。
> >
> > --
> > {
> >   name: "Koichi Kobayashi",
> >   mail: "koichik @ improvement.jp",
> >   blog: "http://d.hatena.ne.jp/koichik/",
> >   twitter: "@koichik"
> >  }
> >
> > _______________________________________________
> > Seasar-user mailing list
> > Seasar-user @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >

--
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
 }



Seasar-user メーリングリストの案内