バグ用メモ

ほとんど自分用のぼやきなので、他の人が見ても「?」な形かもしれない備忘録
そういえばいつの間にか「Gの備忘録」は終わってるということになってましたねw
(というか自鯖を保持する時間と労力がなくなってきた)

JavaWebStart(Java Web Start)での問題点(バグ?)

案件でFTP+データベースをクライアントから操作するJavaWebStartを作成
基本的にローからルカらサーバーに対してDBの操作とか,特にローカルのファイルアクセスを許す
Webアプリなんて絶対できないけど、特別に「証明書」をJarなどにインストールすることによって
可能は可能である。そういうアプリを作成してたのだが、どうもうまくいかない。具体的にどうダメかというと

起動時に警告ダイアログが最小化の状態になって先へ進めない
もしくは最小化というか、WindowのFrame自体は存在するが、ダイアログの内容や画像の表示以外うまいこと動かなかった。(具体的にはチェックボックスや実行ボタンなど表示されなかった)

といった問題で実行すらできてなかった。ローカルの社内での実装ではうまくいったのだが・・・・

部分的に出てるけど、実行ボタンすらない・・・


正しくははこんなかんじに出る

現象としては自己証明書(俗に言う「オレオレ証明書」)をインストールしたjarをJNLP

    • 読み込もうとして検証中にとまる
    • 読み込んだのち、警告ダイアログが最小化(ボタンも内容も表示しない)
    • 読み込んだのち、警告ダイアログが一部しか表示しない

などの現象で表示できなかった。

    • 原因:色々ありすぎて本当の原因がどれかまだよくわかってないが、一応以下のことを色々手探りでやってみた
    • 対応策:
      • EPSConv.jarファイルが利用するjarファイルも証明書をインストール
      • 複数のJarファイル(log4jやらxecesImpleやら)を一緒にインポートしてたため、ひとつだけのjar(メインのやつ)だけにした
      • JNLPの記述「j2se version="1.4+"」を「j2se version="1.5"」に変更
      • EPSConv.jarのmain="true"が抜けてたので追加
      • コンパイラとkeytoolとjarsignerとブラウザの環境が違ってた?(コンパイラとkeytool関係が違ってたら問題が起こりそうな気ガするが・・・)

問題が起きてたときの環境
コンパイラ:1.4
keytoolとjarsigner1.4
ブラウザ:1.5
といった形だったので

      • ローカルマシンがJRE1.4、JDK1.4、JRE1.5、JDK1.5(5.0)全部混在してインストールされてた(ここら辺が一番怪しいwww)
      • 色々やってだめだったので今日の日記のメモの内容のJWSFileChooserDemo をパッケージ化してテストを試みる

   ↓一応成功
そっからなぜかうまいこといってきた(jnlp.jarとかをクラスパスに追加したからか?しかし、そんなものは必要ない実装だったんだが・・・(−−;)


ちなみに証明書はkeytoolとjarsignerのツールを利用すること

自己証明書(オレオレ証明書)のインストール方法
当然不特定多数のちゃんとしたサイトならべりサインなりといったCAに問い合わせてサービスを購入しなければなりません
が、しかしその件で以前Appletで同じ事をべリサイン株式会社に聞いたら「日本ではそのサポートがない」という話だった。
あれから数年たったけど今はいけるんだろうか??????????

keytool -genkey -keystore myKeyStore -alias g___orz

キーストアファイルを作成するに当たって
色々質問がされます、そこらへんは適当に何か入れるだけでもかまいません
要はエイリアスとキーストア名がおなじだったらいいのですから。
これでキーストアファイルが出来上がります

keytool -selfcert -alias myself -keystore myKeystore
keytool -list -keystore myKeystore

これで、キーストアファイルのチェックを行い

jarsigner -keystore myKeyStore EPSConv.jar g___orz
キーストアのパスワードを入力してください:****
警告: 署名者の証明書は 6 か月以内に期限切れになります。

jarsignerでJarファイルにキーストアファイルをインストールします。
ちなみに1.5で行った場合のみ「警告: 署名者の証明書は 6 か月以内に期限切れになります。」
という警告が出ます
これで証明書のインストールができました