アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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が見つからない時は、教えて!gooで質問しましょう!