- PR -

servletの動きについて(スレッド間での変数の共有)

1
投稿者投稿内容
わらび
ベテラン
会議室デビュー日: 2002/08/30
投稿数: 53
投稿日時: 2002-09-26 18:18
servletの動きについて質問します。
以下のようなservletを動かした場合、インスタンスフィールドが
予期せず書き換えられたりするのでしょうか?

public class HogeServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
// doPostへ転送
doPost(request, response);
}


/**
* HTTP Post リクエストの処理
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
HttpSession session = request.getSession(true);

HogeBean bean = new HogeBean();
bean.doFoo();
}
}

-----------------------------------------------------------------------
public class HogeBean{
public void doFoo(HttpServletRequest request, HttpServletResponse response){
private String param = "";

public void doFoo(){
param = request.getParameter("何か");

// paramの値に合わせた処理

// paramによって違うJSPにフォーワード
}
}
}

上記のようなservletを動かした場合、処理中にHogeBeanのparamが、
別の人からアクセスがあった場合、書き換わってしまって、予期せぬ
動きをする場合がありますでしょうか?

servlet内で作成するインスタンスはアクセス毎に作られるのでしょうか?

基本的な質問で恐縮ですが、よろしければ、ヒントなりともご教示いただ
けないでしょうか?
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-09-26 22:18
このコードで変なことが起こるとはあまり思えませんが。
どこかで static なクラス変数を使ってませんか。
わらび
ベテラン
会議室デビュー日: 2002/08/30
投稿数: 53
投稿日時: 2002-09-27 08:58
わざわざありがとうございました。

staticは定数にしか使っていません。
これで安心して、設計を進められます。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2002-09-27 13:58
こんにちわ。

sessionを使用しているところを見ると
Beanのスコープはsessionなんですよね?

であれば、Beanはセッション毎に生成されますので
同一セッションによるアクセス以外は保証されると思います。

#同一セッションによるアクセスってありえるのでしょうか?
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2002-09-27 14:20
>#同一セッションによるアクセスってありえるのでしょうか?

自己レスです。

あります・・。

同一画面からwindowを新規で上げた時などですか。
1

スキルアップ/キャリアアップ(JOB@IT)