私は jboss サーバーを使用しており、すべてのクラスを jar ファイル内に配置しています。
Java ファイルのいずれかを変更した場合は、jar 内のクラス ファイルを置き換えて、サーバーを再起動する必要があります。
サーバーを再起動せずに、新しく作成されたクラス ファイルを動的にロードする方法はありますか?
前もって感謝します。
私はJRebel(http://www.zeroturnaround.com/jrebel/)で大成功を収めました。これは、Javaクラスに加えることができる変更の大部分に対して、シームレスなクラスのリロードを可能にする非常に優れた製品です。アプリサーバーを再起動したり、必要なアプリケーションを再起動したりする必要はありません。クラスはバックグラウンドでリロードするだけです。
30日間の無料トライアルが付属しているので、効果があるかどうかを確認できます。
(免責事項:私はゼロターンアラウンドに接続していません)
いくつかの解決策がありますが、特にきれいで簡単なものはありません。
前述のように、web.xml を変更すると、コンテキストがリロードされ、ソース コードが更新されます。これは、サーバーを再起動せずに行うことができます。これが機能するのは、「WEB-INF/web.xml」が TOMCAT/conf/Context.xml ファイルで WatchedResource として構成されているためです。つまり、すべてのコンテキストがこの設定を継承し、このファイルを自動的に監視します。この動作は削除できますが、独自の web.xml に WatchedResource 値を指定して、追加のファイルを監視することもできます。お勧めしませんが、すべてのクラス ファイルをこれに追加すると、1 つのファイルを変更するとコンテキストがリロードされます。
より良い解決策は、クラスをロードした ClassLoader を破棄するときにクラスを再ロードできるという事実に依存しています。したがって、独自の ClassLoader でホット スワップ可能なコードを管理する場合、ClassLoader を更新すると、コンテキストを再起動せずにコードを更新できます。残念ながら、言うは易く行うは難しですが、始めるきっかけになるかもしれません。
web.xml を変更してサーバーをだましてアプリケーションをリロードさせる必要があるようです。つまり、エディターで web.xml を開いてスペースを入力し、ファイルを削除して保存するか、ユーティリティを使用してファイルの変更日を変更することができます。 .
JBoss には、Tomcat の Server.xml ファイルにある Tomcat の reloadable="true" フラグのような便利な機能がないようです。