トップ «前の日記(2003-06-08) 最新 次の日記(2003-06-10)» 編集

呑んだくれ改めレッツゴー痛風日記


2003-06-09

_ 本社で

ダメだしタイム。

Tags: work

_ さらにJava Web Start

起動アプリへの引数の渡し方。jnlpファイルのapplication要素に1つ以上の<argument>要素を指定できるそうだ。

  <application-desc main-class="Hoge">
    <argument>hoge</argument>
  </application-desc>

ためしに動かしてみた。・・・。おお〜、ちゃんと引数が渡されてる!!すげー。では、次は動的に引数を変えてみよう。サーブレットで作ってみます。getParameterで取得した文字列をargument要素にを突っ込むサーブレットを作ってみました。HttpServletResponseに指定するContentTypeはapplication/x-java-jnlp-fileにします。

response.setContentType("application/x-java-jnlp-file");

一応、servlet-mappingでhoge.jnlpという名前でアクセスできるように設定した。ドキドキしながら動かしてみる。ブラウザからhoge.jnlp?param=hogeとかたたいて。・・・。う〜ん、起動はするのが、引数が渡されていないなぁ。なんでだろう?80番でtelnetして見てみるも、出力しているjnlpは問題なさそう。Tomcatのログをtailしてみると、Java Web Startが起動するときに何回かサーブレット見に行ってる。

うーむ。そこで次に注目したのは、jnlpタグのhref属性。ここで指定しているjnlpファイルを起動時に見に行くのかしら?試しに、その部分もサーブレットで動的にパラメータを追加してみた。

href="hoge.jnlp?param=hoge"

うーむ、どうやら今度はJava Web Startが起動しなくなったぞ。起動時にJNLPExceptionが発生しちった。

例外

JNLPException[category: ダウンロードエラー : Exception: java.io.IOException: Unable to create temp. file for: http://172.25.36.66/nikunoki/hoge.jnlp?param=hoge : LaunchDesc: null ] 
	at com.sun.javaws.cache.DownloadProtocol$RetrieveAction.actionDownload(Unknown Source)
	at com.sun.javaws.cache.DownloadProtocol.doDownload(Unknown Source)
	at com.sun.javaws.cache.DownloadProtocol.getLaunchFile(Unknown Source)
	at com.sun.javaws.LaunchDownload.getUpdatedLaunchDesc(Unknown Source)
	at com.sun.javaws.Launcher.downloadResources(Unknown Source)
	at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
	at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:536)

ラップした例外

ava.io.IOException: Unable to create temp. file for: http://172.25.36.66/nikunoki/hoge.jnlp?param=hoge
	at com.sun.javaws.cache.DiskCache.getTempCacheFile(Unknown Source)
	at com.sun.javaws.cache.DownloadProtocol$RetrieveAction.actionDownload(Unknown Source)
	at com.sun.javaws.cache.DownloadProtocol.doDownload(Unknown Source)
	at com.sun.javaws.cache.DownloadProtocol.getLaunchFile(Unknown Source)
	at com.sun.javaws.LaunchDownload.getUpdatedLaunchDesc(Unknown Source)
	at com.sun.javaws.Launcher.downloadResources(Unknown Source)
	at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
	at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:536)

Windowsで?を含むファイル名が許されていないことが問題のようですな。

試しにRedHatのネスケ4.78から起動したらちゃんと引数渡せて動作しましたね。

Tags: java

カテゴリ一覧

トップ «前の日記(2003-06-08) 最新 次の日記(2003-06-10)» 編集