2014-04-07 13 views
5

Dalla commedia documentation:Come utilizzare stessa transazione database in thread separato con Play Framework 2.2

A causa del modo Gioca 2.0 funziona, il codice di azione deve essere più veloce possibile (. Cioè non bloccante) . Quindi, cosa dovremmo restituire come risultato se noi non siamo ancora in grado di generarlo? La risposta è una promessa di risultato!

Quindi non dovrei effettuare chiamate al database direttamente all'interno dell'azione. Questo ora mi confonde quando guardo Plays JPA documentation:

Ogni APP chiamata deve essere fatto in una transazione in modo, per consentire JPA per una particolare azione , annotare con @ play.db.jpa.Transactional. Questo comporranno il metodo di azione con un azione JPA che gestisce la transazione per voi

Questo mi lascia un po 'confuso. Se seguo la documentazione, non dovrei bloccare un thread di azione con una chiamata al database. Ma se l'azione è ciò che sta creando e gestendo la transazione del database, non sto perdendo quella transazione inviando il lavoro a un attore o in qualche modo trasferendo il lavoro su un altro thread? Voglio dire, sono nuovo di scala e gioco, ma non vedo come la transazione dovrebbe seguire in thread separati. Qualcuno ha una spiegazione o un modo in cui dovrei farlo? Sono molto confuso.

risposta

2

ti manca un pezzo del puzzle, leggere sotto "Highly sincrono" qui: http://www.playframework.com/documentation/2.2.x/ThreadPools

Quindi, sì, si vuole che sia non-blocking, ma se non si può avere che a causa di JPA/JDBC ecc. Allora puoi configurare il gioco come faresti con i normali web container Java - un pool di thread con molti thread. Non ti darà tutto quello che il gioco può dare, ma potrebbe benissimo essere abbastanza buono per te.

È anche possibile creare un pool di thread specifico/contesto di esecuzione ed eseguire il materiale JPA/JDBC solo su quello e mantenere il resto del server non bloccante.

+0

Vedo. Grazie. – spierce7

+0

Mi piace il tuo secondo suggerimento, avere il contesto di pool/esecuzione per JPA/JDBC. Sareste in grado di estendere la risposta con il codice, come farlo? –

Problemi correlati