設定

OpenWebStartでJNLPを使う

アプリケーションによっては凝った画面操作を実現するためにHTMLベースではなくJavaベースで作成されたものがあります。

JNLPとかJava Web Start等と呼ばれているものです(以下、JNLPで統一)。このJNLPですがJavaの古いバージョンでは搭載されていたのですが最新バージョンでは廃止、Javaのライセンス変更やライフサイクル等で古い技術扱いとなっている状況の様ですが、既に稼働しているアプライアンス機器やWebサーバ等のインタフェースとして使わざるを得ない現状があります。

しかし、上記のようにJavaのライセンス変更やライフサイクル等の理由でJNLPが使えるOracle Javaバージョンが使えない状況にあります。

そのため代替として別の方法が必要になります。調べてみるとJNLPのフリー実装としてIcedTeaというものがあります。

このIcedTeaをベースに作ったOpenWebStartというものを今回使ってみたのでTips含めてWindows版をベースに紹介してみたいと思います。

GitHub – AdoptOpenJDK/IcedTea-Web: The new home for IcedTea-Web

The new home for IcedTea-Web. Contribute to AdoptOpenJDK/IcedTea-Web development by creating an account on GitHub.

  

GitHub – karakun/OpenWebStart: Run Web Start based applications after the release of Java 11

Run Web Start based applications after the release of Java 11 – karakun/OpenWebStart

  

インストール

バイナリがGithubにありますのでそちらをダウンロードしてインストールします。

拡張子との関連付けも行えます。

ファイルをダブルクリックするだけで実行できるようになるので関連付けしておくと便利です。

Javaランタイム(JVM)のダウンロードもインストール時に行われます。

JVMがダウンロードされない場合は手動で導入が必要です。OpenWebStartがアップデートチェックしているJVMは下記になります。

Azul System

BellSoft

Eclipse Adoptium

その他OpenJDKなど多数ビルドがありますので必要に合わせて導入しましょう。

OpenJDKと各種JDKディストリビューションの情報源まとめ #minjava – Qiita

はじめに この記事は、2020年3月13日に正式出版された共著『みんなのJava』タイアップ企画としてお送りします。 英語版の記事は「Summary of information about OpenJDK and JDK Dist…

  

既に他のランタイムがある場合、OpenWebStartの設定の中でどのランタイムを使用するか管理することができます。

無事インストールが終わるとWindowsの場合、下記のようにメニューに新規追加されていると思います。

設定画面を立ち上げてみました。

使っていくとわかるのですがGUIで設定できる項目とできない項目があります(2022/04現在)。

GUIから設定できない場合は、テキストエディタ等で設定ファイルの編集が必要になります。

設定

通常だと設定変更しないと使えないケースが多いと思いますので、ポイントとなりそうな部分を書いておきます。(以下Adoptiumを使用したケースの設定になりますが、他JDKでも、ほぼ同じようなpathやファイル名を使えると思います)

OpenWebStartの設定全般についてはこちらのドキュメントが参考になります。

Server Whitelist

セキュリティ項目として信頼のおけるサーバを指定しないと実行時にエラーが出て使えないケースがあると思います。Server Whitelistにアクセス先を登録しておくとこの問題を解決できます。

こちらはGUIから設定できないので設定ファイルの編集を行います。

Pathは${USER_HOME}.config\icedtea-web\deployment.propertiesになります。設定ファイルのPathのヒントはGUIのCertificatesの画面で確認できます。

設定ファイルを開いてアクセス先を追加します。下記のようにワイルドカードも使用できます。詳細はこちらを参照ください。

deployment.security.whitelist=https://*:8443, https://*:8080

追加後、GUIでServer Whitelistを開いて設定が反映されているか確認しておくと良いでしょう。

署名アルゴリズム

古いアプリの場合、署名アルゴリズムを変更しないと下記のようにエラーが出て実行できない場合があります。こちらはJVMの設定ファイルの編集が必要です。

Application Error: Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed.

筆者の環境ではPathは${USER_HOME}.cache\icedtea-web\jvm-cache\adoptium_1.8.0.xxx_x64\jre\lib\security\java.securityになります。

各自のJVMにあるjava.securityファイルを検索して見つけてください。

例えば、下記のように変更します。

#jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \
#      DSA keySize < 1024, include jdk.disabled.namedCurves
jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024, DSA keySize < 1024

Javaバージョンによって設定内容は変わる場合があります。また、セキュリティレベルを下げることになりますので自己責任で変更してください。詳細はこちらを参照ください。

Proxy

リモートワーク時代だとトンネリングやProxy経由でのアクセスが必要になるかもしれません。

こちらはGUIで設定変更することが可能です。実情に合わせて変更してください。

キャッシュ

動作と言うかBugに近い話かもしれませんが、JNLP実行時に複数のjarファイルをダウンロードする場合、並列で実施されます。

サイズが大きいあるいは回線が細いとダウンロードが失敗して起動できない場合があります。

一つ一つダウンロードするようにするか、何度かリトライしてすべてキャッシュできた段階であれば起動できるようになります。

どうしてもおかしな動作の場合は、キャッシュをクリアしてから再度実行してみましょう。

Tags: JavaJNLP
管理人

Recent Posts

Serifのスプリングセール – アドオンが50%オフ

Affinity Photoなどレタッチ…

3週間 ago

音声がロボットのようになるときの対処

リモート会議などでたまに相手の音声がおか…

2か月 ago

Serifのブラックフライデー – 全品40%オフ V1ユーザは更にお得!

恒例のブラックフライデーセールが始まりま…

4か月 ago

[rust] rayonで書き直してみました

前回のコードを元にrayonを使った処理…

5か月 ago

[rust] async-stdで書き直してみました

前回のコードをasync-stdで書き直…

5か月 ago

[rust] mutexを使わないバージョン tokio版ディレクトリ再帰的取得

前回の続き。mutexを使わないバージョ…

5か月 ago