Llevo todo el dia buscando informacion sobre como implementar transacciones distribuidas, XA, en Java, pero a parte de algun que otro API o proyecto no hay un ejemplo claro y sencillo de como hacer transacciones distribuidas entre dos bases de datos, bien similares o distintas, por ejemplo MYSQL y ORACLE. En castellano, no he encontrado nada, de hecho sobre uso de transacciones hay muy poco y lo poco que hay se refiere a Spring. En Oracle, Weblogic e IBM hay algunos documentos en ingles, pero no me aclaran algunos conceptos. Debo crear una transaccion de usuario, creo que si pero no estoy seguro. Hay que hacer enlist para cada nuevo XAResource o se puede declarar para que se haga automatico. Hay que hacer el delist, si se hace antes del commit, se hace commit o rollback sobre el recurso. Como veis no me ha clarificado nada, pero conforme avance en estos temas ire despejando dudas. Al final quiero una transaccion con varias bases de datos.
Posted at 04:58PM abr 12, 2008 by Batch for the Java TM in General | Comentarios[7]
Hola!
Hay un libro: "Java Transaction Design Strategies" que puedes descargar gratuitamente; trae algunos conceptos que quizán puedan ayudar.
http://blog.neuronaltraining.net/?p=594
Saludos
RuGI
Ruiz Guerra Isaac
Enviado por 207.83.202.50 en abril 15, 2008 a las 02:35 AM GMT+01:00 #
Aqui un fragmento del libro :P
http://farm3.static.flickr.com/2186/2414451089_a4534c7e06_b.jpg
Enviado por 207.83.202.50 en abril 15, 2008 a las 02:52 AM GMT+01:00 #
Hola,
Pues das de alta dos datasources en el servidor de aplicaciones, que tengan un driver que soporte XA (XADataSource) y luego haces una transacción normal con los dos DataSources.
El contenedor se encarga de todo el tema XA.
Saludos,
Antonio
Enviado por Antonio en abril 19, 2008 a las 08:40 PM GMT+01:00 #
Habia llegado a esa conclusion, pero muchas gracias por confirmarmela.
El problema que hay con la documentacion de XA es que mezclan el tratamiento de XaDatasources con el de XaResource, incluso te añaden como hacer un RAR.
Ahora solo tengo que ver si la definicion de los pooles soporta XADatasources o tengo que cambiarlos.
Esta confirmacion me ahorra varios dias de pruebas.
Enviado por batch4j en abril 20, 2008 a las 09:39 AM GMT+01:00 #
Holaaaaaaaa espero esten bien, pudiste realizar transacciones???
Mira yo necesito crear un user transaction , he podrado varias cosas que he leeido y varios ejemplos y no he llegado a nada.
Si te resulto espero me cuentes muchas graciasss..
maryfranzy@hotmail.com
Enviado por Maria Francisca en abril 29, 2008 a las 10:15 PM GMT+01:00 #
Es simplemente crear los datasources en el servidor (context.xml para tomcat, *-ds.xml para jboss, por consola para websphere o WL, etc).
Estos datasources deben ser creados como XA (cambia el nombre de la clase del driver) y en algunos xml se declaran distintos
una ves que eso esta listo, solo resta ejecutar las transacciones con soporte JTA con el UserTransaction
Ejemplo
Si utilizas hibernate y spring, solo necesitas setear al sessionFactory que el transaction manager que se utiliza es JTA. Trabajo resuelto ...
Todo otro tema es declarar la propagación de excepciones
Enviado por santiago en abril 30, 2008 a las 08:21 PM GMT+01:00 #
La semana pasada tenia montado los datasources con Xa para oracle y emulando el otro, cuestiones de desconocimiento de como se crean con la otra base de datos.
Puse la transaccion a correr y todo sin problemas.
El mayor problema es que el lunes fue fin de mes y como todos los fin de mes, hubo problemas que me impidieron continuar con el tema de los XA.
Las transacciones XA en Java son muy sencillas de utilizar, de hecho son demasiado sencillas, razon por la que los manuales se dedican a explicarte el tema de los XAresources.
Enviado por batch4j en mayo 01, 2008 a las 08:05 AM GMT+01:00 #