Domanda

Sto scrivendo un adattatore di risorse che non supporta il commit in due fasi. So che esiste una tecnica di ottimizzazione chiamata: " Last Resource Optimization " ;.

Su JBoss la tua classe XAResource dovrebbe implementare LastResource per avere l'ottimizzazione.

La mia domanda è: come si può fare in WebLogic, WebSpehre, Glassfish, ecc ...

È stato utile?

Soluzione

Weblogic: AFAIK (potrebbe essere molto sbagliato) solo i driver JDBC possono essere utilizzati con LRO, ed è un compito puramente amministrativo . Quando un driver non supporta XA, può essere configurato per essere utilizzato con LRO: " Selezionare questa opzione se si desidera abilitare connessioni JDBC non XA dall'origine dati per emulare la partecipazione a transazioni globali utilizzando JTA " .

In sostanza, LRO tollera una risorsa che non ha una fase di preparazione e può solo essere impegnata o ripristinata. Pertanto, se esiste una sola di tali risorse nella transazione XA, potremmo prima tentare di preparare tutte le altre, quindi commettere quella LRO, quindi, in caso di successo, impegnare gli altri, altrimenti ripristinare gli altri.

Vedete, non è necessario dichiarare alcuna interfaccia. È un algoritmo che può funzionare con qualsiasi risorsa non XA. Non sono sicuro del perché di JBoss, ma non mi aspetto che altri server abbiano qualcosa di simile.

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