- PR -

jspでタイムアウトさせないためには?

投稿者投稿内容
なぎ
会議室デビュー日: 2004/11/17
投稿数: 12
投稿日時: 2004-11-24 17:07
インギ様

> <jsp:include page="test.jsp" flush="true" />
>この flush と同じ事です。なんで flush が必要かというと、通常レスポンスに書き出した html は一旦バッファされてjsp やサーブレットの処理が終了した際、またはバッファがあふれるタイミングに一気にブラウザに出力されるからです。
>が、わざわざ include することはありません。
勉強になります。
ありがとうございます!
response.flushBuffer();
の記述をすれば良いのかと考えたのですが、当たっていますでしょうか。
とりあえず、記述してみて動かしたのですが処理が終わった後にリンク先画面が表示するのですね。
やはりスレッドを考えた方が良いみたいですね・・・。
ちなみに開発環境のローカルホストでは正常動作するのですが
サーバーにもっていくと「サーバーが見つかりません。(ページが表示できません。)」
のエラーが出てしまいます。
サーバー側はWebSphere Application Server5.1を使用しています。
JSP1のページは何の問題もなく表示されますのでサーバーが停止しているとかの不具合はないと思うのですが。
テキストファイルが作られているか監視していたら、テキストファイルは作成終了しているのに
jsp2のHTML部分の表示がされずにステータスバーに「http://ホスト名/Web/servlet」をよびにいっているとの記述がずっと出ていました。
とりあえず現状の動作をお知らせします。
javaの質問以外の記述になってしまい申し訳ありません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-24 17:17
meta タグによるリフレッシュが発生するのはページを読み込みおわってからになるのではないでしょうか。
JSP 内で処理をしつづけていてはだめかもしれません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-24 17:23
タイムアウトさせないことが目的であればループ中に out.print("&nbsp;");response.flushBuffer(); とか入れてポツポツとクライアントに出力してみてはどうでしょうか。
なぎ
会議室デビュー日: 2004/11/17
投稿数: 12
投稿日時: 2004-11-24 18:35
インギ様

ありがとうございます
out.print("&nbsp;");
response.flushBuffer();
やってみたところ最後に一気に表示されてしまいました・・・
色々実行してみていたところ、どうやらfor文内でなくDBから値をとってくるところで時間がかかっているようでした。
bean中でブラウザに値を渡すことを考えます。
(でもテキストファイルを作り終わった後何の動作もなくしばらく応答なしの状態でHTML部分の表示をしてくれないのがひっかかりますが・・・output.close(); os.close();に時間がかかることってありますか?)

色々教えていただいたのに、こちらのテスト不足で最初の質問と違ってしまって申し訳ありません。
また質問かきこむかもしれませんがその時はよろしくお願いします。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-24 19:42
>色々実行してみていたところ、どうやらfor文内でなくDBから値をとってくるところで時間がかかっているよ
>うでした。
なるほど。それでは SQL を発行する前に out.print("&nbsp;");response.flushBuffer(); を挟んでみてはいかがでしょう?
ちょっとでもレスポンスが変えるとブラウザが待ってくれる時間はグンと長くなったような気がします。
#もちろんブラウザに依存しますが
なぎ
会議室デビュー日: 2004/11/17
投稿数: 12
投稿日時: 2004-11-25 10:07
インギ様

アドバイスありがとうございます。

>なるほど。それでは SQL を発行する前に out.print("&nbsp;");response.flushBuffer(); を挟んでみてはいかがでしょう?
>ちょっとでもレスポンスが変えるとブラウザが待ってくれる時間はグンと長くなったような気がします。

上記早速やってみました。
JavaBean内でout.print("");を記入したところ、エラーになってしまい記述ができません。
(WebSphereは記述した時点でエラーがわかるので。「outは解決できません」と表示されます)
SQLはJavaBean内で実行しています。
System.out.print("表示");だとブラウザに表示がでないでコンソールのみのようですし。

JavaBeanではout.printは使えないのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-25 10:38
うーん、もう少し Java や JSP/Servlet の基本を勉強したほうが良さそうですね。
#体当たりでここまで進んできているのも結構な力量ですが。

out っていうのは JSP の中で暗黙的に利用できるオブジェクトです。JavaBeans の中では通常利用できません。
オブジェクトを渡しておけばできないことはありませんが役割の分担という意味で表示に関わる処理を JavaBeans に記述するのはよろしくありません。テストもしにくくなりますし。
なぎ
会議室デビュー日: 2004/11/17
投稿数: 12
投稿日時: 2004-11-25 11:19
引用:

インギさんの書き込み (2004-11-25 10:38) より:
うーん、もう少し Java や JSP/Servlet の基本を勉強したほうが良さそうですね。
#体当たりでここまで進んできているのも結構な力量ですが。

out っていうのは JSP の中で暗黙的に利用できるオブジェクトです。JavaBeans の中では通常利用できません。
オブジェクトを渡しておけばできないことはありませんが役割の分担という意味で表示に関わる処理を JavaBeans に記述するのはよろしくありません。テストもしにくくなりますし。



インギ様
勉強不足で本当に申し訳ありません。
本とインターネットと首っ引きでやっているのですが分からない事だらけで泣きそうになっています。
前任者の書いたソースを追うのがやっとの状態なのに問題解決をしなくてはいけないので。
こうやって質問に快く応じてくださる方がいることに本当に感謝します。
ありがとうございます。
jspの中でSQLを実行するjavabeanを実行する前にout.print("");を記述してみます。

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