私の Web アプリケーションは、その機能の一部にネイティブ dll を使用します (その場所は PATH で提供されます)。WAR に変更を加え、JBoss がこの WAR をホットデプロイするまで、すべてが機能します。この時点で、dll が見つからないため、サーバーを手動で再起動する必要があります。
ホット デプロイ後に dll をアプリにロードする最良の方法は何ですか?
そう簡単ではないかもしれません。通常、DLL は特定のクラスローダに関連付けられています。再デプロイすると、アプリケーションに使用された元のクラスローダーが破棄されます。残念ながら、Java 仮想マシンでは、2 番目のクラスローダが DLL を再ロードすることはできません。
仮想マシンによって決してアンロードされない静的なものが必要です。最初のアプリケーションを再デプロイしてもDLLに影響しないため、DLLをロードする2番目のアプリケーションを持つことが解決策になるかもしれません。DLL をロードする Jar ファイルを作成し、それをアプリケーションに追加する代わりに JBoss 自体のクラスパスに追加することも可能だと思います。通常、このようなサーバーには、すべてのアプリケーションで共有される jar ファイルを追加できる「共有」ディレクトリがあります。
次の SUN のバグは、この問題に光を当てています。これは、単にサーブレットをロードするよりもはるかに一般的です。