以下を実装したいと思います。
- MongoDB データベースに移動する Grails の Web アプリケーション
- バックグラウンドでそのデータベースにデータを入力および更新する、長時間実行されるバッチ プロセス
どちらも同じ Grails サービスと同じ GORM ドメイン クラスを再利用したいと考えています (Grails の mongodb プラグインを使用)。
Web アプリケーションの場合、動的 GORM finder メソッドを含め、すべてが正常に機能するはずです。
しかし、バッチ処理を実装する方法がわかりません。
を。これらを Grails サービス メソッドとして実装すると、実行時間の長い性質が問題になります。それらをいくつかの非同期エグゼキューターにラップしても、すべてが不必要に複雑になります。なぜなら、それぞれを個別のJavaプロセスにして、簡単かつ個別に監視および停止できるようにしたいからです。
b. それらを src/groovy スクリプトとして実装し、コマンド ラインから起動しようとすると、Grails サービスを適切に挿入できず (ApplicationHolder メソッドが NPE をスローする)、または GORM ファインダー メソッドを機能させることができません。スタンドアローンの GORM ガイドはすべて Hibernate を念頭に置いており、全体として、追求する正しいルートではないようです。
c. 「バッチランチャー」Grails プラグインを検討しましたが、インストールに失敗し、少し放棄されたようです。
d. src/groovy からスクリプトを実行するための「run-script」Grails コマンドを検討しましたが、実際には開発では機能するようですが、本番環境では正しく動作しないようです。
このような問題を抱えているのは私だけではありません。一般的にはどのように解決されるのでしょうか?
Grails アプリケーションでコード ベースと DB を共有するスタンドアロン スクリプトを実行するにはどうすればよいでしょうか。