Le operazioni (di proprietà Atomicità) in EJB 3 si applicano solo alle operazioni di database - ho ragione?

StackOverflow https://stackoverflow.com/questions/3158861

Domanda

Lo so che le operazioni potrebbero essere utilizzati per realizzare atomicità.

Come se methodOne() methodTwo() methodThree() sono bastonato in un'unica transazione, se del caso del metodo fallisce, l'intera operazione viene ripristinato. Un rollback si tradurrebbe in un rollback a livello di database e di conseguenza il database sarebbe stato portato a uno stato, come era prima della transazione.

Ma cosa succede se i metodi apportate modifiche a state-variabili o statiche-variabili o scritto ad alcuni file nel file system? La mia comprensione è che un "rollback" non si applica per tali modifiche non-database e che tali modifiche non vengono annullate. È la mia giusta comprensione?

È stato utile?

Soluzione

  

Le operazioni (di proprietà Atomicità) in EJB 3 si applicano solo a operazioni di database - Ho ragione

?

No non lo sei. Le operazioni si applicano a risorse transazionali , la specifica Java EE riconoscere tre tipi di risorse transazionali:. Database JDBC, destinazioni JMS, e "altri servizi transazionali accede tramite JCA"

  

Ma cosa succede se i metodi apportate modifiche a state-variabili o statiche-variabili o scritto ad alcuni file nel filesystem?

Quelli non sono risorse transazionali (a meno che non si sta scrivendo per il file system attraverso un connettore JCA per la successiva).

Altri suggerimenti

le risorse di sistema di file non sono transazionali. Quindi si dovrà rotolare le modifiche indietro. Oppure si dovrebbe guardare adattatori di risorse del file system forniti da contenitori.

Le operazioni in tale contesto si riferiscono a transazioni di database. Se si inserisce il codice Java, quali variabili alter, o l'uscita prodotti al file system, non lo si utilizza bene. Si dovrebbe avviare una transazione ed effettuare le operazioni solo al database.

Anche se, se il vostro DBMS apportare modifiche al tuo filesystem (attraverso una procedura negozio, ad esempio), allora è necessario controllare la documentazione di quel DBMS.

Quindi, a leggere il codice, se si dispone di codice dopo il comando "START TRANSACTION", è necessario esaminarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top