Wir verwenden deklarative Sprung Transaktionsattribut für die Datenbankintegrität. Einige unserer Code-Aufruf Webservice, die Bündel in Sharepoint tun. Das Problem ist, wenn Webservices länger dauern, bis die Benutzer einen Deadlock vom Frühling bekommen, der das Backend hält.Spring :: Wenn ein Fork ein neuer Thread wird erzwungen in der Transaktion von Spring
Wenn ich einen neuen Thread innerhalb einer Funktion mache, die das deklarative Attribut der Spring-Transaktion hat, wird das vom Frühling ignoriert?
[Transaction(TransactionPropagation.Required, ReadOnly = false)]
public void UploadPDFManual(/*parameters*/)
{
//DO some data base related things
if (revisionPDFBytes != null)
{
//my sharepoint call which calls webservice
Task.Factory.StartNew(() => DocumentRepositoryUtil.CreateSharepointDocument(docInfo)); // I draw a new thread from ASPNET worker thread pool.
}
}
Alles andere Optionen, die ich gehen sollte?
Ich mochte die Idee entkoppeln, was nicht in der Transaktion sein sollte –