サードパーティの依存関係を含む Java Web アプレットを展開する
-
02-10-2019 - |
質問
いくつかのサードパーティのライブラリと、JNI 経由で呼び出される DLL に依存する Java アプレットを作成しました。これらは明らかにクライアント コンピュータにはインストールされません。いずれにせよ、これらのサードパーティのライブラリと外部 DLL をアプレットの JAR 内にパッケージ化して、基本的な Java インストールを持つクライアントで実行できるようにすることはできますか?
解決
Web アプリケーション内で JNI を使用すると、特に Windows では胸焼けが起こりやすくなります。
- 明らかに、WAR ファイル内に DLL をデプロイすることはできず、おそらく事前にデプロイヤーによって別のインストーラーを実行する必要があります。
- 次のことを確認する必要があります。
java.library.path
正しくセットアップされています。これは通常、WAR ファイルでデプロイ可能なものではなく、アプリケーション サーバーの設定によって行われます。 - JNI がネイティブ クラスをライブラリにリンクする方法により、その Web アプリケーションの複数のインスタンスを実行しようとすると、クラス ローダーで問題が発生します。これを回避する 1 つの方法は、含まれている JAR ファイルを共有クラス ローダー (Tomcat の共通フォルダーなど) に移動することですが、これには独自の複雑さが伴います。
他のヒント
とにかく、これらの第三者の性欲を包装するためにありますか
Eclipseでは、Javaプロジェクトのプロパティ(右クリック)の下で、私は次のことができます。
Export... => Export as Runnable JAR
次に、そのエクスポートされた瓶に瓶の依存関係を詰め込むように言います。エクスポートされた瓶には、そのすべての依存関係が詰め込まれます。
Alt Text http://www.ubuntu-pics.de/bild/97131/selection_016_mg6idm.png
私はこのトピックの専門家ではありませんが、そこに それは これらすべての問題に対する実用的な解決策。彼らはあなたに頭痛を与えるかもしれませんが、いくつかのことはこの方法でのみ行うことができます(そして、私はあなたの委託CSPの問題がその1つであると確信しています)。
あなたは見ることができます opensign から Openoces-Project. 。魔法はorg.openoces.opensign.client.applet.bootstrapで発生します。
私もそれを信じています jnlpappletlauncher 同じ問題を解決しますが、私は経験がありません。