私はGrailsのrun-script
を使って実行されている面白いスクリプトを持っています。大量の静的データからデータベースを移入します。 this Grails/Hibernate session issueのために、時々セッションをクリアする必要があります。私がしない場合、アプリがメモリ不足になります。したがって、run-script
を使用して実行している場合、セッションまたはWebアプリケーションコンテキスト(GrailsWebApplicationContext
)への参照を取得するにはどうすればよいですか?実行スクリプトを使用して実行しているときにセッションまたはWebアプリケーションのコンテキストを取得する方法はありますか?
3
A
答えて
5
_RunScript.groovy
を見ると、アプリケーションのコンテキストとGrailsApplicationオブジェクトがスクリプトのバインディングに挿入されていることがわかります。
def shell = new GroovyShell(classLoader, new Binding(ctx: appCtx, grailsApplication: grailsApp))
あなたがそれらを持っていたら、現在のセッションへのアクセスを得ることは簡単です、あなたのスクリプト内だけで現在のセッションのセッションファクトリを聞いて、あなたはそれをクリアすることができますについての
def currentSession = ctx.sessionFactory.currentSession
currentSession.clear()
関連する問題
- 1. VMスクリプトのResourceIdを取得する方法は、PowerShellを使用してAzureで実行していますか?
- 2. Linuxでスクリーンセーバーとしてアプリケーションを実行する方法はありますか?
- 3. appiumを使用して既に実行中のアプリケーションのコンテキストを取得する方法は?
- 4. eclipseを使用してpytestスクリプトをデバッグまたは実行する方法は?
- 5. ストアドプロシージャの実行中にPRINTステートメントを使用して実行を追跡する方法はありますか?
- 6. Tomcatでアプリケーションを実行しているときにリンケージエラーを再現する方法はありますか?
- 7. モノを使用してASP.NET Webアプリケーションを実行するには?
- 8. Google App Engine Webアプリケーションのhtmlを実行していないと、Webサーバーの実行中にリアルタイムで結果を取得する必要がありますか?
- 9. Pythonスクリプトを実行して、私のUbuntuサーバーを使用できる方法はありますか?
- 10. Asp.Net Webアプリケーションからsysinternals PSExecを使用してスクリプトを実行
- 11. スクリプトを実行した後に対話型ルビーシェルを取得する方法はありますか?
- 12. Eclipseを使用してスクリプトを実行せずにPythonコードをデバッグする方法はありますか?
- 13. Webアプリケーションを閉じていても実行し続ける方法はありますか?
- 14. WebアプリケーションとしてWebサーバー上でJavaアプリケーションを実行していますか?
- 15. Atomで複数のバージョンのPythonを使用してPythonスクリプトを実行する方法はありますか?
- 16. 私はJavaを実行しているスクリプトを実行しているスクリプトを終了しますか?
- 17. localhost上でのみ実行している間にホスト名を取得する方法はありますか?
- 18. ネイティブスクリプトアプリをWebアプリケーションとして実行できますか?
- 19. C#アプリケーションのコンテキストでF#スクリプトを実行する方法
- 20. RPMインストールを並行して実行する方法はありますか?
- 21. 実行コンテキストを使用してリスナーにファイル名を送信する方法は?
- 22. セッションが終了したときにスクリプトを実行する
- 23. web.config変換を使用して「置換または挿入」を実行する方法はありますか?
- 24. javascriptを使用してブラウザプラグインまたはアドオンコマンドを実行する方法はありますか?
- 25. オリジナルを使用しているときに複製bashスクリプトを実行することはできますか?
- 26. React.js - operationStore.getItems次のコマンドを使用して自分のWebアプリケーションを実行しているとき、私は次のエラーを取得しています機能
- 27. Perlスクリプトを使って実行したUnixコマンドを取得するには?
- 28. %includeを使用してSASスクリプトを実行しています
- 29. ポリマーコンポーネントとしてangularJSアプリを実行する方法はありますか?
- 30. HashCorp VaultをWindowsサービスとして実行する方法はありますか?
グレート説明'ctx'がどのように注入されるのか。 –
ここでの答えは、run-scriptsコマンドを使ってGrailsのアプリケーションコンテキストで実行されるGroovyスクリプトです。いくつかのサイトは、 'includeTargets << grailsScript(" ... ")'を使って参照していますが、答えに記載されているように、実行スクリプトには必要ありません。あなたのスクリプトに '@ Field'を定義するときに' ctx'にアクセスしようとすると、あなたを捨ててしまうかもしれません。 '@ Field'宣言が評価された時点で、' ctx'バインディングはまだ発生していません。 '@ Fields'で代入を' 'ctx''を参照することを別の行に定義するだけで済ませればうまくいきます。 –