- PR -

Java Web Start起動アプリケーションにセッションごとのパラメータを渡すには

1
投稿者投稿内容
まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 2005-01-26 13:35
下記の件、私の現段階の能力・情報収集力では分かりませんでした。
お詳しい方いましたら、お教えください。

Apache/Tomcatを使ってWebアプリケーションサイトを作っています。
J2SE: 1.4.2_05
Tomcat: 5.0
クライアント上でJavaアプリケーションをWebのJava Web Startを介して
起動させる場合、渡すパラメータは簡単にはJNLP ファイルの<application-desc>
の子要素<argument>で指定できるようですが、パラメータがセッションなどによって
変わる場合はどうすればいいのでしょうか?

JNLPファイルをセッションなどの別に動的に生成して、<argument>の部分を変える
しかないのでしょうか? そもそもこれは可能なのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-01-26 16:20
セッションとは HttpSessionのことでしょうか?
まず、JNLP を動的に生成することは可能です。
Sun が提供している JNLPServlet なんかがそうですね。
http://www.google.com/search?hl=en&lr=&c2coff=1&q=jnlpservlet+site%3Ajava.sun.com&btnG=Search
もちろんそれの応用で HttpSession のセッション ID を JNLP に織り込む事は可能です。
しかし Java Web Start のアプリケーションは必ずしもブラウザから起動されるわけではないのでオフラインやセッションタイムアウト後に起動された場合どうするのか考える必要がありますね。

どういう要件かちょっと見えてこないのですが、まず HttpSession と JWS アプリケーションを切り離せないか考えてみてはいかがでしょうか。
まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 2005-02-03 18:44
質問者です。遅ればせながら、その後の報告です。

インギさん、情報・コメントありがとうございました。
助かりました。

まず、Java Web Start (以下 JWS) させるプログラム
なんですが、元々独立アプリケーションとして作って
いたもので、これをなかば無理矢理Webアプリケーション
のユーザセッションと連携させて動作させようとして
質問をした次第です。
確かに元から設計を考え直した方がいいのかもしれ
ませんが...
オフラインでは利用しないので、アプレットでも
いいのですが、アプレット用に書き直すのも
少し手間ですし、やはりWebアプリケーションの
セッションとの連携の問題もありそうです。

まず自分でやってみたのは

(A) JWSで起動するアプリケーションでそのWeb
アプリケーションにアクセスし、パラメータを
得る

という試みです。
しかし、JWSで起動したアプリケーションからは
セッションやクッキーの情報は得られないようで
断念しました。

次にインギさんの指摘にあった

(B) Sun の JnlpServlet のように、JNLPファイルを出力する
サーブレットを作りセッション情報に対応させる

を試し、何とか希望の動作をさせることができました。
ただ、JNLPファイルの内容がキャッシュに残るためなのか
動作が今一不安定なのですが、とりあえずはよしとします。

以上、遅ればせながら報告します。
1

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