Java Web Start (Client側) の問題解決方法

あまり使われていないのか、完璧すぎて問題が全く無いのか?ネットにほとんど情報が無いですね。J2SE1.4.2では問題が発生するのにJ2SE1.5では問題が出ないとか様々な問題が発生しています。最近良く見るエラーは・・・。
「XXXは、署名されていません。」「バージョンのフィールドが見つかりません。」だとか、特に、署名については謎です。署名しているにも関わらず署名検証に失敗してます。まだこの問題については解決してませんが、解決の糸口としてJava Web Startデバッグ方法を調査しました。方法は以下のとおり。

  1. 起動されるJava環境変数から"user.home"のパスを調べる。
  2. そのパス直下に".javawsrc"を作成する。
  3. ".javawsrc"に以下の記述をする。
  4. いつもどおりにjnlpファイルを読み込み起動すると・・・。J2SE1.4.2だとデバッグウィンドウが死ぬほど出ます(^_^;)。J2SE1.5だと"user.home\Application Data\Sun\Java\Deployment\log"にtraceログが出力されます。まだ"LogToHost"についてちゃんと見ていないのですが、ログをリモートで出力できる?とかかしら。分かったら追記します。


TraceSecurity=true
TraceStartup=true
TraceSplashScreen=true
TraceProxies=true
TraceCache=true
TraceMuffins=true
TraceDiskCache=true
TraceAppletViewer=true
TraceClassLoading=true
TraceJRESearch=true
TraceExtensions=true
TraceHTMLEntryParsing=true
TracePlayerImageLoading=true
TraceCacheEntryManager=true
TraceLocalAppInstall=true
TraceDownload=true
TraceJarDiff=true
TraceIgnoredExceptions=true
TraceAutoUpdater=true
TraceXMLParsing=true
TraceThreads=true
TraceHttpsCert=true
TraceIcoCreation=true
TracePlayer=true
TraceConfig=true
TraceEncoding=true
RedirectOutput=true
RedirectErrors=true
LogToHost=null
DebugWindow=true
SupportJREinstallation=true
OverrideSystemClassLoader=true
TCKHarnessRun=true
TCKResponse=true
詳しくこれらのオプションの意味や効果を見ていないのですが、この方法って公に公開されているのかな?誰か教えて下さいm(__)m
(追記 2004/12/22)
Java Web Startでダウンロードするjarファイル内にMETA-INF以外のファイルが無い場合、「署名検証エラー」が発生します。実はこれは1.4.2_02のバグだったんですよ。理由は、Java Web Startを使用してダウンロードしたキャッシュフォルダには、3種類のファイルが出来ます。

  • RCxxx.jar:署名ファイル
  • RMxxx.jar:Jar本体(マージされた)
  • RTxxx.jar:タイムスタンプファイル

J2SE1.4.2_02では、署名検証をRCxxx.jarで行います。META-INF以外無いファイルは署名していても0byteです。ここで署名検証エラーが発生します。
J2SE1.5.0では、RCxxx.jarファイルがありません。書名チェックをRMxxx.jarで行うように変更されたからです。
ここまで調査するのは、疲れますね・・・。