applicationContext.xml
のを介してロードされたSpringWebアプリケーションがありContextLoaderListener
ますXmlWebApplicationContext
。アプリケーションコンテキストにはQuartzスケジューラー(ここSchedulerFactoryBean
のように定義されています)がありますが、トリガーやジョブの詳細はありません。
このメインアプリケーションコンテキストのロード中に、独自のpluginApplicationContext.xml
ファイルを含むいくつかの「プラグイン」JARをロードします。それぞれがメインの子としてにpluginApplicationContext.xml
ロードされます。GenericXmlApplicationContext
XmlWebApplicationContext
これらのプラグインにはQuartzJobBean
、上記のスケジューラー内でスケジュールされたQuartzジョブ()が含まれている場合があります。スケジューリングはQuartzAPIを介してプログラムで実行する必要がありますが、これは私にとっては問題ありません。ジョブがトリガーされると、Quartzによって適切にインスタンス化され、が拡張されるため、を介しQuartzJobBean
て現在のデータを取得できます。ここでの問題は、ジョブがスケジュールされている場所の代わりに取得することです。したがって、プラグイン内で定義されたBeanを取得するために呼び出すことはできません。ApplicationContext
setApplicationContext
XmlWebApplicationContext
GenericXmlApplicationContext
getBean
私はこれらすべてが起こる理由をよく理解しています。しかし、それを処理するためのクリーンで再利用可能なソリューションを見つけることができません。私はすでにOSGiを見てきましたが、このプラグインシステムを既存のアプリケーションに実装しています。新しいプラグインシステムを最初から作成するのではなく、アプリケーション全体をOSGiに移行するのは大変な作業です。OSGiや他のプラグインフレームワークがこの種の状況にどのように対処するか知っていますか?
あなたの助けをどうもありがとう