Newsgroup: it.comp.java
Titolo: XADatasource e Datasource

Dalle prove che sto facendo con l'AS di Sun usando connessioni MySQL e 
Oracle ho notato che se uso dei Datasource normali (non XA) impostando gli 
Autocommit = FALSE e il livello di isolamento SERIALIZABLE  ottengo delle 
connessioni che hanno le stesse caratteristiche di quelle provenienti da 
XADatasource. A questo punto mi nasce spontanea una domanda. Se la 
UserTransaction funziona sia con connessioni di DataSource che con quelle 
provenienti da XADatasource allora che un dirver supporti gli XADatasource a 
che serve???
In particolare: se imposto sull'AS dei Datasource, via JNDI ritiro fuori 
degli oggetti che "casto" a Datasource. Impostando degli XADatasource mi 
sarei aspettatodi castare XADatasource e invece ritorna lo stesso un 
Datasource... come sta storia??? (e si ritorna alla domanda iniziale)
Grazie a tutti 

 XADatasource allora che un dirver supporti gli XADatasource a che serve???
La differenza principale tra un Datasource "normale" e uno "XA" (perdonami
la terminologia) č che con il primo puoi gestire transazioni a livello db
"locali", o meglio rivolte verso un singolo dbms. Un provider di connessioni
XA, invece, ti consente di realizzare transazioni distribuite su piů dbms,o,
ancora, di incapsulare in una transazione anche risorse non-dbms: caso
tipico, servizi di messaggistica JMS.
Saluti,
    Scorpio.

 tipico, servizi di messaggistica JMS.
grazie della tua risposta...
quello che avevo capito anche io fino ad ora è proprio cio che hai
riassunto tu in poche righe, ma il bello è che sono riuscito a fare
una transazione distribuita (sia commit() che rollback() della
UserTransaction) sia con Datasource normali, che con Datasource XA.
Ecco perchè mi chiedo io: ma chi me lo fa fare di usare gli XA?

Ecco perchè mi chiedo io: ma chi me lo fa fare di usare gli XA?
Una domanda: sei riuscito a creare una transazione distribuita su due dbms 
diversi ?
Scorpio.

 Scorpio.
si, su 2 diversi... mi ero dimenticato di dirlo...
qualche idea di come sia possibile???
PS. puoi seguire ancora questo thread che ti vorrei fare un altra domanda?
Grazie 

 il seguente è un estratto del file XA4.java di oracle
[CUT]
A dire il vero, mi sembra che il sorgente che hai postato mostri appunto
come bypassare l'utilizzo di UserTransaction, ed in questo mi associo alla
tua domanda: perchè dovrei fare tanta fatica se ho a disposizione
UserTransaction ? L'unica risposta che mi viene in mente è che quel codice
potrebbe essere utilizzato fuori da un contesto J2EE (per esempio da un
client Java), dove non hai il supporto a JTA.
Ad ogni modo: circa le connessioni XA, che è l'oggetto della tua domanda,
confesso che per quel che ne so, esse vanno  utilizzate per gestire
transazioni distribuite su più risorse transazionali, legate a meno a DBMS.
Mi stupisce che senza il "supporto XA" tu possa coinvolgere in un'unica
transazione un DBMS 'A' ed un DBMS 'B', dove A e B sono due vendor
diversi....
A questo punto, dal momento che mi hai davvero incuriosito, proverò a fare
qualche esperimento..
Scorpio.

 qualche esperimento..
Grazie, quando sai qualcosa fammi sapere.
PS: scusa se mi ripeto nella domanda, ma ho bisogno anche di questa
conferma:
Usando un AS, sia impostando un pool come javax.sql.DataSource che come
javax.sql.XADataSource, è corretto che io casti (almeno con AS sun non
posso fare diversamente) sempre a javax.sql.DataSource??
Grazie mille