Ich habe ein Setup, bei dem ich OpenEntityManagerInViewFilter verwenden, um nicht transaktionale Lesevorgänge aus meiner Datenbank zu aktivieren. Um diese Lesevorgänge an einen Slave in einer Master/Slave-Konfiguration zu senden, setze ich meinen Verbindungspool so, dass er Verbindungen standardmäßig auf schreibgeschützt setzt. Mein Problem ist jetzt, dass selbst die mit @Transactional markierten Methoden Lese-Schreib-fähig sind, die Verbindung nicht auf Lesen-Schreiben eingestellt ist und die Transaktion an einen Nur-Lese-Server gesendet wird. Ist dies das erwartete Verhalten im Frühling und/oder wie kann ich das beheben?Spring transaction nicht Einstellung der Verbindung readOnly false
0
A
Antwort
0
Mit dem gleichen Problem konfrontiert, obwohl ich das schreibgeschützte Flag im CP30-Pool standardmäßig auf true gesetzt habe. Sie können dies über die ConnectionCustomizer-Schnittstelle tun.
Ich nehme an, dass die Feder annimmt, dass der Standard-Nur-Lese-Wert falsch ist, also keine Änderungen daran vornimmt. Siehe DataSourceUtils.prepareConnectionForTransaction
Weiß nicht, ob dies als ein Fehler ausgelöst werden sollte.
Verwandte Themen
- 1. Spring @Transaction nicht zurückrollen
- 2. Spring und Postgres transaction Fehler
- 3. Spring Junit Transaction Rollback nicht nach Commit
- 4. Spring Transaction Verhalten
- 5. Spring Transaction Hibernate @Transaction Annotation funktioniert nicht mit @Autowired
- 6. Spring Transaction - Proxy Verwirrung
- 7. Spring transaction fail rollback
- 8. Spring - Transaktion Readonly
- 9. Camunda Spring Transaction Integration funktioniert nicht
- 10. Spring Boot - Transaction Management funktioniert nicht
- 11. Spring Data Solr @Transaction Commits
- 12. Ausführen von RxJava beobachtbar als readOnly innerhalb von Spring Boot Transaction?
- 13. Spring Transaction Management funktioniert nicht mit Spring Boot + MyBatis?
- 14. asp: TextBox ReadOnly = true oder Enabled = false?
- 15. Spring: @Transactional @Scheduled Methode löst Transaction
- 16. Einstellung Nested Keys auf False
- 17. jmeter GUI Einstellung https.use.cached.ssl.context = false
- 18. -Bestätigen: $ false als globale Einstellung
- 19. Spring AMQP/RabbitMQ und Hibernate Transaction Mananger
- 20. @Transaction Annotation für Integrationstest in Spring Boot
- 21. Spring Transaction Annotationen - Execute on Success
- 22. So protokollieren Sie Spring transaction content
- 23. Atomikos Transaction Management Spring Boot/Federstaus
- 24. "START TRANSACTION" in MySQL verursacht Verbindung Timeout
- 25. Spring.datasource.initialize = false funktioniert nicht
- 26. Spring Transaction - Ausführungszeit der Protokollmethode bei neuer Transaktion
- 27. Readonly Verbindung mit mssql und pyodbc
- 28. Spring Boot JPA Verbindung Validierung funktioniert nicht
- 29. PDO Transaction funktioniert nicht
- 30. Nested Transaction nicht in Tests
Wir verwenden eine spezielle Annotation, um zwischen Datenquellen zu wechseln: Master/Slave für Situationen wie diese und Nur-Lese-Attribut für Transaktionsannotation, wir tun keine Standardwerte für einen Pool, obwohl es möglich ist für Slave-Datenquelle – borowis
Wie haben Sie festgelegt der Verbindungspool zu "schreibgeschützt" und welche Txn-Isolation wird verwendet? – sura2k
@ sura2k HikariCP hat eine HikariDataSource.setReadOnly und ich verwende die Standard-Isolationsstufe für innodb (wiederholbares Lesen). –