Ich habe einen Dienst, der mit einem anderen Computer kommuniziert. Da es sich um eine einfache Controller-Methode handelt, greift Grails automatisch eine DB-Verbindung aus dem Pool, während mein Controller mit dem anderen Server kommuniziert. Ich möchte das verhindern und die Datenbankverbindung manuell öffnen, wenn ich bereit bin, damit sie eine Verbindung während eines langen Zeitraums nicht aufschnappt, wie zum Beispiel Netzwerkanrufe. Wie verhindere ich, dass Grails in einer Controller-Methode automatisch eine Verbindung aus dem Pool aufnimmt?Grails beim Öffnen einer Verbindung zur Datenbank in einer Controller-Methode stoppen
Antwort
Wenn Sie einen Controller zu erstellen hat es die Transactional
Anmerkung auf sie, so etwas wie:
@Transactional(readOnly=true)
class FooController { ..
Wenn Sie diese Anmerkung entfernen (und alle Verfahren Ebene Anmerkungen), dann wird Grails keine Verbindung mehr mit der Datenbank zu starten die Transaktion.
Open Session In Ansicht sollte nicht ins Spiel kommen, da wir einen faulen init Ansatz zum Erhalt der Verbindung mit OSIV
Hinweis beantworten über meinen Gebrauch vorausgesetzt, dass Sie eine aktuelle Version von Grails verwenden (2.3.x oder höher)
Aktualisiert
für MongoDB Sie durch die Definition der folgenden Bean automatisch Verbindung für alle Controller deaktivieren können (was die Standardeinstellung überschreibt) in grails-app/conf/spring/resources.groovy
:
mongoPersistenceInterceptor(org.codehaus.groovy.grails.support.NullPersistentContextInterceptor)
Allerdings gibt es keine Möglichkeit auf einer Pro-Controller Basis zur Zeit
Was ist, wenn die Version unter 2.3.x ist? Nur neugierig. –
Wenn es unten ist, gibt es keinen Standard, nur Transaktionen für Controller zu lesen, daher würde keine Transaktion gestartet und keine Verbindung zur Datenbank hergestellt. –
Also ich habe @Transactional jetzt auf keinem meiner Controller (ich benutze 2.3, aber ich habe von 2.2 aktualisiert). Ich verwende auch MongoDB anstelle von Hibernate. Funktioniert das immer noch für das MongoDB-Plugin? Kann ich dafür sorgen, dass für mich automatisch keine Verbindung mehr hergestellt wird? – chubbsondubs
- 1. Problem mit Mail-Flood beim Herstellen einer Verbindung zur Datenbank
- 2. SocketTimeoutException beim Herstellen einer Verbindung zur lokalen Datenbank
- 3. Nullreferenzausnahme beim Herstellen einer Verbindung mit einer Datenbank
- 4. Seltsame Ausnahme beim Öffnen einer Datenbank in PhpStorm?
- 5. Fehler beim Herstellen einer Verbindung zur Warteschlangenmanager-Laufzeitausnahme in Eclipse
- 6. Probleme beim Herstellen einer Verbindung zur mysql-Datenbank bei Verwendung einer Konfigurationsdatei
- 7. Warnung über SSL-Verbindung beim Herstellen einer Verbindung zur MySQL-Datenbank
- 8. Problem beim Stoppen einer Schleife
- 9. AjaXplorer Verbindung zur Datenbank
- 10. Öffnen einer SSL-Socket-Verbindung in Python
- 11. Herstellen einer Verbindung zur Postgres-Datenbank über eine Phonegap-App?
- 12. Grails - Ausnahme beim Stoppen/Abbrechen eines Uploads
- 13. Verbindung mit einer Oracle-Datenbank
- 14. Verzögerung beim Herstellen einer Verbindung zur SQL Server-Instanz?
- 15. Öffnen einer Datei in einer Datenbank in .NET gespeichert
- 16. Datenbank öffnen und schließen Verbindung in Android?
- 17. SQL-Verbindung in Grails
- 18. Authentifizierungsfehler beim Herstellen einer Verbindung mit der Heroku PostgreSQL-Datenbank
- 19. MySql PDO Verbindung zur Datenbank
- 20. Unable Verbindung zur Datenbank - PHP
- 21. Verbindung mit einer SQLite-Datenbank nicht möglich
- 22. Verbindung zu einer Redshift-Datenbank in einer Symfony-Anwendung herstellen
- 23. Segmentierungsfehler beim Öffnen einer Datei in C++
- 24. Problem beim Öffnen einer Datei in Linux
- 25. Verbindung zur Datenbank fehlgeschlagen in DNN
- 26. Establing Verbindung zur MySQL-Datenbank [PHP]
- 27. Nur ASPX (HTML) -Datei durchläuft virtuelles Verzeichnis, aber beim Herstellen einer Verbindung zur Datenbank findet es keine web.config-Verbindung
- 28. Fehler beim Öffnen einer hochgeladenen CSV-Datei
- 29. Öffnen Sie die Datenbank einer anderen Anwendung?
- 30. Öffnen einer Datenbank von externem Speicher Android
Hmm zu deaktivieren, ich vermute, dass dies aufgrund der offenen Sitzung im Hinblick Ansatz ist, wo eine Anfrage sofort eine Hibernate-Session erhält zu verwenden. Ich bin mir nicht sicher, ob Sie das für einen bestimmten Controller oder sogar eine Methode in diesem Controller deaktivieren können. Eine sehr gute Frage. –