- - PR -
servletの動きについて(スレッド間での変数の共有)
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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内で作成するインスタンスはアクセス毎に作られるのでしょうか? 基本的な質問で恐縮ですが、よろしければ、ヒントなりともご教示いただ けないでしょうか? |
|
投稿日時: 2002-09-26 22:18
このコードで変なことが起こるとはあまり思えませんが。
どこかで static なクラス変数を使ってませんか。 |
|
投稿日時: 2002-09-27 08:58
わざわざありがとうございました。
staticは定数にしか使っていません。 これで安心して、設計を進められます。 |
|
投稿日時: 2002-09-27 13:58
こんにちわ。
sessionを使用しているところを見ると Beanのスコープはsessionなんですよね? であれば、Beanはセッション毎に生成されますので 同一セッションによるアクセス以外は保証されると思います。 #同一セッションによるアクセスってありえるのでしょうか? |
|
投稿日時: 2002-09-27 14:20
>#同一セッションによるアクセスってありえるのでしょうか?
自己レスです。 あります・・。 同一画面からwindowを新規で上げた時などですか。 |
1
