- PR -

セッションが切れないアプレットはできるでしょうか?

1
投稿者投稿内容
ojagggyo
常連さん
会議室デビュー日: 2003/10/13
投稿数: 23
投稿日時: 2003-10-21 21:46
アプレットでモニタ画面を作成して、サーバ側のDB情報の変化を常に表示したいのですが、
通信がない状態が続くとセッションが切れるようです。
トリガはアプレット側ではなくサーブレット側という条件です。
またセッションタイムアウトの時間は変更しない条件です。
どなたか知恵をいただきたく。よろしくお願いします。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2003-10-21 22:08
> トリガはアプレット側ではなくサーブレット側という条件です。

ブラウザが閉じたり、ブックマークから他のページに移動したり
した場合の処理は考えているのでしょうか?
「やってはいけない事」の典型のような気がするのですが。。。

それはそうと、セッション(Applet-Servlet間のTCPセッションでなく、HTTP
セッションの事ですよね?)がタイムアウトしないためには、定期的にブラウザ
からリクエストを発行させればよいです。
アプレットのあるページをフレームにして、一方を見えないフレーム(width 0%)
にしといて、そこで、
<meta http-equiv="Refresh" content="1200">
とか書けば、定期的にリクエストを発行するので、セッションは切れません。
ojagggyo
常連さん
会議室デビュー日: 2003/10/13
投稿数: 23
投稿日時: 2003-10-21 23:54
t-wataさん回答ありがとうございます。

セッションについては、よく理解していませんでした。
Applet-Servlet間のTCPセッションは初めて聞きました。
どこの設定値で管理しているのでしょうか?

今回は、トラヒックを多くせずに、
サーバ側のDB情報の変化をどのようにクライアントに
伝えるかをポイントに考えています。
そのためにサーブレットがトリガではどうかと考えました。
他に良い方法があればと考えています。
やはり、クライアントから定期的に
問い合せる方法が最適なのでしょうか?
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-10-22 00:03
引用:

やはり、クライアントから定期的に
問い合せる方法が最適なのでしょうか?



session.setMaxInactiveInterval(-1);

でセッションタイムアウトを無効にできます。
とまと
ベテラン
会議室デビュー日: 2003/10/18
投稿数: 51
投稿日時: 2003-10-22 07:57
サーブレットコンテナの設定でもできるかもしれませんね。
とまと
ベテラン
会議室デビュー日: 2003/10/18
投稿数: 51
投稿日時: 2003-10-22 07:57
引用:

とまとさんの書き込み (2003-10-22 07:57) より:
サーブレットコンテナの設定でもできるかもしれませんね。



そうすると、Webアプリケーション全体に反映されてしまいますね。
失礼しました。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2003-10-22 11:49
> Applet-Servlet間のTCPセッションは初めて聞きました。
> どこの設定値で管理しているのでしょうか?

自分で作って、自分で管理するのですが。

HTTPは、クライアント(ブラウザ)がリクエストを発行し、サーバ
はそれに答える、というモデルなので、HTTPには、サーバから一方的
にクライアントへイベントを通知する手段を有していません。
Servletにトリガを置くには、自分でそのような仕組みを作り込むしか
ないです。
そのために、AppletでServerSocketを作成して、Servletが、Applet
のServerSocketに接続する方法があり、その接続がTCPセッションです。

ただ、これは基本的には、「できるけどやってはいけない事」です。
(開発も運用も苦労することになります。)
HTTPを使う場合は、サーバ側から、クライアント(ブラウザ)側に
一方的に通知することは諦めるべきです。
ojagggyo
常連さん
会議室デビュー日: 2003/10/13
投稿数: 23
投稿日時: 2003-10-25 19:18
最終的には、
クライアントから定期的にサーバに対して問い合せを行う方法にしました。
回答ありがとうございました。
1

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