Quartzジョブをクラスパスに動的に追加できるように動的Webプロジェクトをデプロイしようとしています。これが私の考えです。
'完全修飾クラスパスを含むXMLファイルから構成を読み取り、クラスでClass.forName()を使用して、構成XMLからそのクラスのインスタンスを作成すると、Tomcatに配置された動的に追加されたクラスにアクセスできるようになります。 TOMCAT_HOME/libディレクトリ'。
この更新の前は、アプリケーションは正常に機能していましたが、これらの新しく外部化されたクラスが戦争に含まれていました。ただし、次の理由により、これを行うことはできなくなりました。
- 新しい仕事が必要になるたびに戦争を再展開したくない。
- 継続的に実行する必要のあるジョブがあるため、サーバーを停止して新しいジョブを追加することはできません。
ただし、class.forName()メソッドを実行すると、NoClassDefFoundErrorが発生します。私はすでにcatalina.propertiesで、Tomcatのlibディレクトリがcommon.loaderプロパティにあることを確認しました。
私の質問は、Tomcat共通ライブラリのjar内のクラスをWARクラスに認識させるにはどうすればよいかということです。何か案は?ありがとう。
添加:
@BalusC:私は実際に、ユーザーがXML構成ファイルを編集して新しいジョブを追加できるWebベースの管理画面をすでに開発しました。ただし、ジョブの別のインスタンスだけでなく、まったく新しいジョブを追加するには、この新しいジョブのコード定義が必要です。これをjarファイルに配置して、tomcat libディレクトリにドロップし、class.forName()で取得できるようにします。