- PR -

RequestDispatcher#forwardの実装について

1
投稿者投稿内容
bump
会議室デビュー日: 2004/07/02
投稿数: 10
投稿日時: 2007-09-11 19:19
表題の件について質問があります。

製品によって実装は異なるのかもしれませんが、
RequestDispatcher#forwardメソッドを呼び出された場合、forward先の処理を行っているスレッドと呼び出し元のスレッドは別のものなのでしょうか?

だれかご存知の方がおられれば、教えていただけないでしょうか。
よろしくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-09-12 03:03
特殊なことをやらない限り、リクエストが同じになるので、
forwardは基本的に同じスレッドになるはずです。
bump
会議室デビュー日: 2004/07/02
投稿数: 10
投稿日時: 2007-09-12 18:26
かつのりさん、解答ありがとうございます。

J2EEの仕様を見てみると、明記はされていないように思います。
(私は調べ方が甘いだけかもしれませんが。。。)

リクエストを「委任」するという言葉があるのですが、それがどのような意味を指すのでしょうか。。。

共通ライブラリ的なものを作成しているため、ミドルウェアが変わっても、スレッドが別であることを保障したいため、多くの方の意見をいただければ助かります。

皆さんよろしくお願い致します。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-09-12 21:56
引用:

bumpさんの書き込み (2007-09-12 18:26) より:
J2EEの仕様を見てみると、明記はされていないように思います。
(私は調べ方が甘いだけかもしれませんが。。。)


さすがにそこまで詳細な実装までは明記されないと思います。

引用:

共通ライブラリ的なものを作成しているため、ミドルウェアが変わっても、スレッドが別であることを保障したいため、多くの方の意見をいただければ助かります。


ん?スレッドは同じだと思いますよ。

標準なフレームワークにも同一スレッドを前提とするものがあるので、
実装が異なるWebコンテナがあったとしても、むしろWebコンテナ側が
修正することになると思います。

例えば、JSFのFacesContextは仕様的にThreadLocalに格納されるため
forward()時にスレッドをまたぐとJSPのレンダリングで破綻しますが、
SunのRIもMyFacesもその辺りの対策は行われていません。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-09-12 22:08
引用:

bumpさんの書き込み (2007-09-12 18:26) より:
リクエストを「委任」するという言葉があるのですが、それがどのような意味を指すのでしょうか。。。



原文を読んでないから確かなことは言えませんが、単にオブジェクト指向での委譲と同じ意味で使っている気がしますね。
単に、「そっちで処理してよ」って受け渡す程度の意味ではないかと。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-09-12 22:31
スレッドが別になると動かないフレームワークの類は多々ありますので、
こだわる必要はないかなと思います。
気合で対策されたところで、他のフレームワークが動かなければ、
結果としてシステムとして正しく動作しないですよね。

この辺はサーブレットコンテナの行儀の問題だと思います。

要件からするとThreadLocalにオブジェクトを保存しているということでしょうか。
スレッドが変わっても動作を保障するなら、
ThreadLocalを使わない方法を模索してみてはいかがでしょうか。
bump
会議室デビュー日: 2004/07/02
投稿数: 10
投稿日時: 2007-09-13 16:26
皆さん、ご解答ありがとうございます。

引用:

かつのりさんの書き込み (2007-09-12 22:31) より:
要件からするとThreadLocalにオブジェクトを保存しているということでしょうか。
スレッドが変わっても動作を保障するなら、
ThreadLocalを使わない方法を模索してみてはいかがでしょうか。



その通りです。
既にこのライブラリを利用したアプリケーションを開発はじめており、現状はこの仕様のまま進めたいと思っています。

引用:

かつのりさんの書き込み (2007-09-12 22:31) より:
スレッドが別になると動かないフレームワークの類は多々ありますので、
こだわる必要はないかなと思います。



この言葉は何よりの解答です。
今回作成しているライブラリも、「スレッドは同じである」ことを前提に作成することにします。

ご意見ありがとうございました。
とても助かりました。
1

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