リッチクライアントでわからないことがあって困っています。

サーブレットからJNLPを生成してクライアントでJavaWebStartを起動しています。リッチクライアントが
ステートレスなのは重々承知しているのですが、なんとかリッチクライアントでもサーブレットのステートを継承する方法ってないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

クライアントアプリケーションからサーブレットへリクエストを送信する時に、JNLPを作成したユーザのセッションIDを一緒に渡してあげればよいのではないでしょうか?


セッションIDを渡す方法は、サーバのセッション管理方法によって以下のように異なります。

1.クッキーで管理
⇒ URLConnection#setRequestProperty()メソッドを使用して、サーバへリクエストする前に、サーバから受け取ったクッキーを設定する。
(この場合、クッキーは、JNLPのパラメタとして事前に受け取っておく必要があります。)

2.URL リライティングで管理

⇒JNLPのパラメタとして事前にセッションIDを受け取っておく。
URL#openConnection()で接続するサーバURLの後ろにセッションIDを付加する。

1.のやり方に関しては以下の書き込みが参考になるのではないかと思います。(Applet-Servlet間通信に関する書き込みですが、Web Startにより起動されたアプリケーションにもにも適用できるかと思います。)

また、注意しなければならないのはセッションタイムアウトへの対応です。
リッチクライアントアプリケーションの場合は、サーバとの通信間隔が長くなる傾向にありますので、利用ユーザがクライアントアプリケーション内だけにに閉じた作業を行っている間にセッションがタイムアウトになり、セッションが切れてしまうことがあります。以前、私自身がAppletを利用したアプリケーションを組んだ際には、一定間隔毎にダミーのメッセージをサーバへ送信し、セッションを保つようにしたことがあります。

参考URL:http://java-house.jp/ml/archive/j-h-b/029835.html
    • good
    • 0
この回答へのお礼

なるほど、よくわかりました!
現在利用しているのはApacheCommonsのHttpClientなので、そのままつかえるわけではないですが、解決の糸口ができました。ありがとうございます。

お礼日時:2005/04/20 18:47

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q福岡市近郊のアジア映画が豊富なレンタルビデオ屋

アジア映画にハマッています。
特に香港映画が好きで、香港映画のタイトルが豊富なレンタルショップを探しています。
福岡市近郊(福岡県内でも結構です)に心当たりのある方がいらっしゃれば教えて下さい。
また、以前あった≪シネシティ香港 天神店≫はなくなってしまったようですね。
そのような香港映画関連のショップをご存知であればその情報も教えて下さい。
よろしくお願いします。

Aベストアンサー

ども,daredevilと言います。

最近↓のような【オンラインDVDレンタル】サービスがあり便利です。月額\2,000-程度(年会費\1,000-程度)支払えば全て郵送(切手代不要)で月に何回でも借り放題のDVDレンタルで,山間部などレンタルビデオ店が近隣にない顧客層や時間の忙しいビジネスマンなどに非常にうけています。agehachanさんも↓のいずれかで借りてはどうでしょう?メリットは以下の通り。

・ Web上で入会手続きから、レンタルするDVDタイトルの指定まで完結
・ DVDの発送/返却は郵送で行なうため、全国どこでもサービスが受けられる
・ 月額料金は定額制で、DVDが見放題
・ 返却期限がないので、延滞料金がかからない
・ ただし同時貸出枚数に制限(通常2枚)があり、返却しないと次が借りられない
・ 見たいタイトルをWeb上で“ウィッシュリスト”として登録しておくと、上位のタイトルから順に在庫のあるものを自動的に発送してくれる
・ 返却は、同封されてきた封筒に入れて投函するだけ。切手も不要
・ 返却が確認されると、ウィッシュリストにしたがって次の2枚が送られてくる
・ 以下、繰り返し

「DISCAS」
http://www.discas.net/d/d/index.html

「ぽすれん」
http://posren.com/

「DVDZOO」
http://www.dvdzoo.jp/

「GEOLAND」
http://www.geoland.jp/

参考にして下さい。

ども,daredevilと言います。

最近↓のような【オンラインDVDレンタル】サービスがあり便利です。月額\2,000-程度(年会費\1,000-程度)支払えば全て郵送(切手代不要)で月に何回でも借り放題のDVDレンタルで,山間部などレンタルビデオ店が近隣にない顧客層や時間の忙しいビジネスマンなどに非常にうけています。agehachanさんも↓のいずれかで借りてはどうでしょう?メリットは以下の通り。

・ Web上で入会手続きから、レンタルするDVDタイトルの指定まで完結
・ DVDの発送/返却は郵送で行なうため、全国どこ...続きを読む

Qサーブレットコンテキストの意味がわからなくて困っています。

やさしいJava活用編で勉強しているのですが、

サーブレットコンテキストの説明が書いてなく、ネットで調べても意味不明です。

サーブレットコンテキストは、
javax.servlet.ServletContextインタフェースを実装するクラスのインスタンスで、そのアプリケーションに一つあるとのことですが、

そのサーブレットコンテキストの意味がわからなくて困っています。
HttpSessionのようなもので、クライアントではなく、そのアプリケーションに対して1つあるということですが...
ServletContextオブジェクトは、具体的に何の情報を持っているのですか?


また以下のソースですが、
なぜ指定されたパスにあるリソースを、ラッパーとして機能するRequestDispatcherオブジェクトを返してから、
forwardで転送するのですか?


ServletContext sc = getServletContext();
sc.getRequestDispatcher("/thanks.html").forward(request, response);

やさしいJava活用編で勉強しているのですが、

サーブレットコンテキストの説明が書いてなく、ネットで調べても意味不明です。

サーブレットコンテキストは、
javax.servlet.ServletContextインタフェースを実装するクラスのインスタンスで、そのアプリケーションに一つあるとのことですが、

そのサーブレットコンテキストの意味がわからなくて困っています。
HttpSessionのようなもので、クライアントではなく、そのアプリケーションに対して1つあるということですが...
ServletContextオブジェクトは...続きを読む

Aベストアンサー

そうですねぇ。例えて言えば、contextはナースコールみたいなものだとおもいます(「情報を持っている」というだけでなく、用事も頼めるので)。

現代のアプリは、心臓や肺など、基本的な機能をアプリケーションサーバにやってもらっているので、いわば寝たきりの人みたいなものです。
自分で勝手に立って、いろいろやる力がないので、ナースコールを押してサーバにきてもらって、いろいろ助けてもらわないといけない局面があるのですね。

RequestDispatcherは、リモコンみたいなものです。看護士さんは忙しいので、患者がいちいちチャンネルを変えたいときに、毎回テレビをいじりにいく余裕がありません。

ですから、患者が「6チャンネルに変えたい」といったら、「電池を入れて、テレビのほうに向けて、ハイ」という風にセットして、さっさと自分の仕事に戻ってしまいます。

そういうことをしたいので、RequestDispatcherオブジェクトを返してからforwardをやらせる設計にしたんじゃないかと思います。

Qセッションファイルの場所

php.ini内の記述を見ると、windowsでセッションを使用するためには、session.save_pathパスを設定しなければならない、となっているのですが、これを設定しないまま、現状、セッションが使用できています。

できれば、現状のまま使用していきたいのですが、どこか知らないところでファイルが生成されているのも気持ち悪く、セッションファイルの保存先を探したのですが、見当たりませんでした。C:\tmp等のフォルダもありません。

セッションファイルはどこに保存されているのでしょうか。
環境はwindows 2000+php5です。

よろしくお願いします。

Aベストアンサー

phpinfo();
で session.save_path の部分にパスが表示されています。

Qサーブレット-サーブレットの通信で文字列を送りたいのですが

サーブレット間の通信で文字列(String)を送りたいのですが
うまく受け取れません。
URLEncoder.encodeをつかって変換して送り、
URLDecoder.decodeで受けとってます。お願いします。

Aベストアンサー

具体的に、どうなってしまうのかが分からないと、答え様がないですね。

(1)最初の文字列
(2)URLEncoder.encodeの結果
(3)URLDecoder.decodeの結果
が提示されていると、有力なヒントになるはず。差し支えなければご提示を。

Q映画館は人が入らない方が儲かる??? 映画好きな人が増えたら映画館が儲かると思いますよね? 日本人の

映画館は人が入らない方が儲かる???

映画好きな人が増えたら映画館が儲かると思いますよね?

日本人の映画館利用率は年2回が平均だそうです。

みなさんは年2回を年3回に、いや年4回見るようになると映画館は儲かると思うのでは?

でも、本当の映画好きは映画のポイントスタンプを貯めて10回見たら1回分の無料券をプレゼント!の上客はその映画館の株主になってるんですよね。

要するに本物の映画好きは株主優待券で見てるからタダで見てるわけです。

しかも株主は節約家か金持ちが多いので不味い映画館のポップコーンなんて食べないわけですよ。

だから映画好きが増えると株主が増える。

でもその株主は幾ら映画を見てもタダなわけです。年何回とかあるけど色んな映画館の株主になってるので映画のチケットを買うことがない。

で、映画好きが増えると株主が増えすぎて、映画館の資金より多くなってもう一個映画館を建てるか別のビジネスを始めて余剰金を回さないといけなくなる。

で、トチって破綻する。映画館がガラガラでも映画館は存続する。逆に映画好きが増えると余剰資金を回すために大きく出て破綻するケースが多い。

よって映画館はガラガラの方が経営は長続きするのである。

年2回客がポップコーンやコーラやらを買ってくれるから経営が成り立つ。

年3回、年4回と来る回数を増やす努力をした映画館は規模がデカくなりすぎて破綻するのだ。

映画館は人が入らない方が儲かる???

映画好きな人が増えたら映画館が儲かると思いますよね?

日本人の映画館利用率は年2回が平均だそうです。

みなさんは年2回を年3回に、いや年4回見るようになると映画館は儲かると思うのでは?

でも、本当の映画好きは映画のポイントスタンプを貯めて10回見たら1回分の無料券をプレゼント!の上客はその映画館の株主になってるんですよね。

要するに本物の映画好きは株主優待券で見てるからタダで見てるわけです。

しかも株主は節約家か金持ちが多いので不味い映画館の...続きを読む

Aベストアンサー

映画好きな人が増えたら映画館が儲かると思いますよね?・・・・思いません。理由は、配信会社が儲かるのです。
昔から映画は版権がありますね。あれが金になるから、少しシステムが違います。

QJavaサーブレット?がわかりません。

質問です。
HTMLで作られた画面のテキストボックス(test1)に値を設定し、
ボタンを押下することによってJava(サーブレット?)に値を渡し、
Java側からHTML画面の別のテキストボックスに値を設定するのには
どうしたら良いのでしょうか?
画面は
<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<TITLE></TITLE>
</HEAD><BODY>
<FORM name="Form" action="main">
<TR><TD><INPUT type="text" name="test1">
<INPUT type="text" name="test2">
</TD></TR><BR>
<TR><TD><INPUT type="submit" value="試験"></TD></TR>
</FORM></BODY></HTML>
こんな感じです。
Java側のdoGetメソッドで
String name = request.getParameter( "test1" );
で取得した値を画面のtest2のテキストボックスに値を設定したいのですが
新しくHTML画面を作成するのではなく、既存の画面のテキストボックスに値をいれることができるのでしょうか?
よろしくお願いします

質問です。
HTMLで作られた画面のテキストボックス(test1)に値を設定し、
ボタンを押下することによってJava(サーブレット?)に値を渡し、
Java側からHTML画面の別のテキストボックスに値を設定するのには
どうしたら良いのでしょうか?
画面は
<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<TITLE></TITLE>
</HEAD><BODY>
<FORM name="Form" action="main">
<TR><TD><INPUT type="text" name="test1">
<INPUT type="text" name="test2">
</TD></TR><BR...続きを読む

Aベストアンサー

今環境ないので試してませんが、
Java 側で受け取ったものを戻すという方法は3種類ぐらいあります。
「RequestDispather による転送」「request 属性の利用」「PrintWriterによる出力」など
ですが、ここは form の action でサーブレットを指定するのではなく JSP ファイル(そのファイル自身)を指定してみては。
JSP にはスクリプトレット、宣言、式 の3つがあり
スクリプトレットに Java のコードを記述できます。そこでたとえば
分かりやすい例で
%>
String s = null;
if (request.getParameter("namae").equals("three")) {
s = request.getParameter("test3");
}...
%>
...
<INPUT type="text" name="test4" value="<%=s%>" />
Html タグもあってるかどうか試してません。
もっと良いアルゴリズムあるでしょうけど色々やってみてください。

今環境ないので試してませんが、
Java 側で受け取ったものを戻すという方法は3種類ぐらいあります。
「RequestDispather による転送」「request 属性の利用」「PrintWriterによる出力」など
ですが、ここは form の action でサーブレットを指定するのではなく JSP ファイル(そのファイル自身)を指定してみては。
JSP にはスクリプトレット、宣言、式 の3つがあり
スクリプトレットに Java のコードを記述できます。そこでたとえば
分かりやすい例で
%>
String s = null;
if (request.getParameter(...続きを読む

Q[FC2]サービスの追加ができない

FC2でブログを作ろうとおもったのですが、
サービスの追加から追加しようとすると、
「セッション情報が切れました。 FC2IDにログインしてから登録ください。」
ログインもしているのにです。
何か対策はありませんか?
よければ教えて下さい、お願いします。

Aベストアンサー

FC2IDでは結構そういう状態になりますね
新規登録の場合だとなおさら^^;

一度ブラウザを閉じて、クッキーとキャッシュをクリアしてから
ログインしなおしてみてください。

QMVCモデルでのサーブレットのやること

Javaを習い始めた者です。
MVCモデルでのサーブレットのやるべきことが、いまいちつかめないので質問させていただきます。

私が思っているサーブレットのすることは、
(1)送られてきたた情報をgetParameter()する。
(2)JavaBeanを生成したり、getAttribute()する。
(3)getParameter()したものをJavaBeanにsetする。
(4)JavaBean内のメソッドを実行する。
(5)JavaBeanをsetAttribute()する。
(6)別のJSPなどにfoward()する。
です。
(基本的に計算や比較などの処理は、サーブレット上では行わず、JavaBean内のメソッドで行う)

この考え方は間違っていますか?

あと例えば、ログイン認証のプログラムを作るとき、上の考え方だと、getParameter()したIdとPasswordをJavaBeanにsetして、JavaBean内のメソッドで、setしたIdを元にDBからPasswordをgetしてきます。そしてこのPasswordと、setしたPasswordを比較することになると思います。

でも、私的にはJavaBean内のメソッドで、引数にgetParameter()したIdを与えて、DBからgetしたPasswordを戻り値にします。そしてサーブレット上で、このPasswordとgetParameter()したPasswordを比較しようと思いました。

でもこれだと、サーブレット上でPasswordを比較するという処理を行っているのでMVCモデルに反しているのでしょうか?

わかりにくい説明で申し訳ないのですが、教えてください。
お願いします。

Javaを習い始めた者です。
MVCモデルでのサーブレットのやるべきことが、いまいちつかめないので質問させていただきます。

私が思っているサーブレットのすることは、
(1)送られてきたた情報をgetParameter()する。
(2)JavaBeanを生成したり、getAttribute()する。
(3)getParameter()したものをJavaBeanにsetする。
(4)JavaBean内のメソッドを実行する。
(5)JavaBeanをsetAttribute()する。
(6)別のJSPなどにfoward()する。
です。
(基本的に計算や比較などの処理は、サーブレット上では行わず、JavaB...続きを読む

Aベストアンサー

貴方の考え方であっています。よって、Servlet内でパスワードを比較するのはMVC的にはNGです。

MVCで重要なのは、ModelはControllerを知らなくても動作するってことです。MVCに乗っ取ってパスワード比較を実装すると、Servletのない環境でもそのModelを利用してパスワード比較することができます。逆に言うと、それができないような設計になってる場合はMVCじゃないってことです。

Q英語のポスターセッション

英語でポスターセッションするときに,
覚えておくといい表現やこういうことをすると発表がよくなる
などのアドバイスをいただけないでしょうか?

英語が苦手な上に公の場でポスターセッションすることがはじめてなので
かなり緊張してます…

どうかよろしくお願いします.

Aベストアンサー

 ポスターセッションを「英語で」ということは、媒体言語自体が英語で書いてあるということだと思います。

 ポスターセッションの目的は参加者が自分のスピードで展示物が読める、ということですから、まず
 英語に翻訳する必要がない。
 英語で読んでやる必要も無い。(むしろ声を出して読めば他の人の邪魔になる)
 よくある質問の答えは、プリントして置いておけば答える必要は無い。

 ということであれば、難しい質問は、「あの方にお尋ねください」Please ask her/him. Thank you.と言えばいいでしょう。
 易しい質問だけ答える、ということではいかがでしょう。

Qサーブレットで困っています。

「基礎からのサーブレット/JSP 改訂版」という本で勉強を始めようと開発環境を整えたのですが、本の通りにやっても、うまくいきません。
本に最初に載ってるアプリケーションの作成のところで「hello.txt」というファイルを作り、
アドレスに「http://localhost:8080/entry/hello.txt」と入力すると
Hello
This is Text
という hello.txt の中身が表示されるはずなのですが、
HTTPステータス 404-/entry/hello.txt
と出てきてしまいます。
調べたところ、このエラーはファイルが無いという意味らしいのですが、ファイルは指定の位置に置いてあります・・
コマンドプロンプトから「JAVA_HOME」と入力すると「JAVA_HOME=C:\Program Files\Java\jdk1.5.0_16」と出て来ます。(本ではjdk1.5.0._09となっています)
これ以外のところは本と一緒なのですが・・

どなたか、お分かりになりましたら、教えてください。お願いします。

「基礎からのサーブレット/JSP 改訂版」という本で勉強を始めようと開発環境を整えたのですが、本の通りにやっても、うまくいきません。
本に最初に載ってるアプリケーションの作成のところで「hello.txt」というファイルを作り、
アドレスに「http://localhost:8080/entry/hello.txt」と入力すると
Hello
This is Text
という hello.txt の中身が表示されるはずなのですが、
HTTPステータス 404-/entry/hello.txt
と出てきてしまいます。
調べたところ、このエラーはファイルが無いという意味らしいので...続きを読む

Aベストアンサー

環境を書いてみると、ヒントを得られるかもしれませんよ。

●OSは?
●サーブレットコンテナは何のどのバージョンですか?
●環境変数は?
JAVA_HOME以外の、環境変数も必要な物を列挙してみるとよいです。
PATHとか、サーブレットコンテナが使用している環境変数などです。


人気Q&Aランキング

おすすめ情報