Home
Manual de Usuario
Contents
1. Contando ahora con la clase Manager es necesario asociar esta clase a una operaci n para poder seleccionarla en el momento de recibir los mensajes de prepare commit O rollback Dado que la API publica un nico servicio para escuchar estos mensajes de coordinaci n pero la aplicaci n provee varios servicios coordinados es necesario diferenciar al momento de recibir uno de estos mensajes cu l es el servicio al que pertenece Para poder diferenciar y seleccionar la l gica de negocio que se debe ejecutar seg n el participante destinatario de los mensajes de coordinaci n es necesario registrar en el servicio de coordinaci n una instancia de esta clase y asociarle una palabra clave que la diferencie de los dem s Managers esta palabra clave la llamamos operaci n Esta operaci n es la que diferencia a cada Manager de los dem s de forma de poder seleccionar la l gica de negocio a ejecutar Al momento de registrar un participante en la transacci n esto se ver m s adelante se le asociar tambi n una operaci n de modo que pueda determinarse el Manager que le corresponde 11 Para registrar un Manager se utiliza la clase TwoPhaseCommitParticipantService Esta clase es la encargada de ejecutar toda l gica de coordinaci n para los participantes de TwoPhaseCommit y s lo necesita de una instancia de un Manager para ejecutar la l gica correspondiente al negocio El siguiente c digo muestra c mo registrar un Ma
2. UNIVERSIDAD ORT Uruguay Universidad ORT Uruguay OMB Manual de usuario Framework para coordinaci n de sistemas distribu dos usando el protocolo WS AtomicTransaction Mar a Emilia Blanco M nica Hernando Gabriel Kouyoumajian Pablo Venturino 17 02 2010 1 l 3 4 5 Indice o O EN AE EE EEE AET l P O E A E E IE 2 CONT O O E a E A T E T ii e ioasaca 3 3L Contienraci nde la Dase de datos a 3 Inicio de u a transacci n ui 6 Publicaci n de Servicios COOTdINAdOsS sssaaa nean E a ERER 8 5L Recibitel contexto de la transaction daI 8 3 2 Creatum Manager para la OPTA ds 8 5 2 1 Estrategias para la implementaci n oooonccnnncccnonononnnnnnnnnnonononannnnnnnnnnnnnnnannnnnnnnos 11 5 3 Registrar el Manacor para los SETVICIOS AS 11 34 Reeistrar participantes en la tradSacCi nN iii ri 12 2 Requisitos Todas las librer as necesarias para utilizar la API de coordinaci n est n incluidas en el paquete participant jar Agregar este paquete al classpath de la aplicaci n es suficiente para poder utilizar la API gt 1 7 Tambi n se necesita una base de datos compatible con el framework Hibernate La librer a de coordinaci n necesita de un esquema de base de datos dedicado para almacenar informaci n de coordinaci n https www hibernate org 3 Configuraci n Antes de iniciar la aplicaci n coordinada debe proveerse cierta informaci n para que la librer a de coordinaci n func
3. n autom tica de tablas pero que no sea create drop pues y p y se perder a la informaci n de sesiones anteriores y no se podr a realizar la recuperaci n de fallas Puede usarse por ejemplo el valor update A continuaci n se presenta el contenido de un archivo persistence xml de ejemplo FA e e e aa aaa aaa aan aa aaa aaa aaa aaa a aa aa aaa aa aaa a aaa a aaao aan aaao aaa aaa aaa aaa aa aa aaa aa aaa aa aeaa aaea alaaa aaa aaa aa a aa aaa aaa aaa a a a a a a a a a a a a a a a aaa a E encoding gt s UE gt lt persistence version 1 0 xmlns http java sun com xml ns persistence xmlns xsi http www w3 org 2001 XMLSchema instance xsil schemaLlocation http java sun com xml ns persistence o Java SUN com XMI NE peo moments pere mo encs loss ai SITIOS SEO SUI AE a ea a IS O OS gt a OU E OCA lt provider gt org hibernate ejb HibernatePersistence lt provider gt lt class gt org ombu model CoordinationContext lt class gt lt class gt org ombu model Participant lt class gt lt class gt org ombu model CompletionParticipant lt class gt lt class gt org ombu model TwoPhaseCommitParticipant lt class gt lt properties gt proper mae mena neones a sil value com mysql jdbc Driver gt lt property name hibernate connection username value app user gt lt property name hibernate connection password velue app passwd gt lt property name hibernate connection url value ape mysql dos sr v
4. 5 5 5 a 5 m 5 5 5 m m 5 m m m m m m 5 m 5 m 5 5 5 5 5 a a 5 m 5 a 5 m 5 5 m m m m m m 5 s 5 n e m m m m m m m m m m m m a Obtener la instancia del AtomicTransactionManagerlImpl AtomicTransactionManagerlmpl atmgr AtomicTransactionManagerlmpl getinstancel atmgr begin try Obtener el contexto Este se usa para que otros participantes puedan registrarse en esta transacci n Coordinacion onte etr amor Er Oor dinat Ion Context I Tnvocar Sera icios de Otros participantes Parea opan E Sale One e Me e e MO Pantone as cnvites ly ot Me a e IO 1 ana a ts ale caloat boolean success atmgr commit catch Exception e Ecos ode Mater cor mcdes hacer la rerans dee lona Atmel aci La invocaci n al m todo begin realiza el llamado al servidor de coordinaci n para crear una nueva transacci n Internamente tambi n registra un participante del protocolo Completion para finalmente comunicar el resultado de la transacci n Los llamados a los m todos de otros participantes deben proveer una forma de compartir el contexto con ellos de forma que estos tambi n puedan registrarse como participantes en la transacci n activa En el c digo de ejemplo se asume que las clases ParticipantA y ParticipantB encapsulan la comunicaci n con cada uno de los participantes Esta comunicaci n no necesita ser a trav s de servicios web pero s debe proveer una forma de compartir el contexto Una vez que todas las operaciones d
5. continuaci n se muestra un ejemplo de esta clase static class DebitManager extends TwoPhaseCommitParticipantManager lOverride public Vote onPrepare IwoPhaseCommitParticipant participant Implementar la l gica de preparaci n return Vote PREPARED Override public void onCommit IwoPhaseCommitParticipant participant Implementar la l gica de confirmaci n Override public void onRollback TwoPhaseCommitParticipant participant Implementar la l gica de cancelaci n AAA AAA e e e e E E E E E E S E E E E E E E E S E E E E E E E E E E E S E E E S E E S E E E S S S S S S S E S S S E S S E S E E E S S E 5 5 S E S E S S S E E E E S S S E E E E S E E E E E S E E E E S E E 5 5 1 O E S S N E O E E S E a E e S a m e m e a a a a e a m a a a a m e m a a a a a al La clase creada implementar estos tres m todos que corresponden con cada uno de los pasos en una transacci n at mica del proceso de confirmaci n en dos fases Two Phase Commit Como se muestra en cada uno de los m todos se tiene acceso como par metro a un objeto del tipo TwoPhaseCommitParticipant Con este objeto se puede acceder al identificador nico del participante con un llamado a participant getId 0 el estado del participante con un llamado a participant getState onPrepare En este m todo se debe implementar la l gica de preparaci n del servicio Este m todo es invocado por el coordinador en primera instancia para determin
6. ia aplicacion Apollo sete s tdetco salia culona Atomic Trans action Manager implantada ze nS ance Resto del c digo de la aplicaci n Para crear un servicio que pueda ser coordinado deben realizarse varios pasos Primero se debe recibir el contexto de la transacci n en la que se va a participar Luego se debe crear una clase que implemente la l gica de negocio y registrarla para que se ejecute al recibir mensajes de coordinaci n para un participante con esta operaci n Por ltimo al momento de ejecutar una Operaci n de negocio se debe registrar un participante en la transacci n utilizando el contexto recibido y la operaci n a la que el participante corresponde A continuaci n se brindan m s detalles de este proceso 5 1 Recibir el contexto de la transacci n El servicio en cuesti n debe recibir como par metro un objeto CoordinationContext o en su defecto proveer alguna forma de recibir este objeto 5 2 Crear un Manager para la operaci n Para cada servicio de negocio que la aplicaci n publique se deber crear una nueva clase que contenga la l gica de coordinaci n de este servicio Estas clases ser n las encargadas de procesar los mensajes de coordinaci n de cada participante que pertenezca a los servicios que stas clases manejan Estas clases manager deber n heredar de la clase abstracta org ombu participant at TwoPhaseCommitParticipantManager implementar los m todos onPrepare onCommit Y onRollback A
7. Vote READONLY La operaci n de preparaci n tuvo xito y adem s la posterior ejecuci n de onCommit O de onRollback llegar an al mismo resultado Retorne este valor si se da el caso en que sin importar la resoluci n de la transacci n el estado de la aplicaci n resultar a id ntico S1 retorna este valor aseg rese de ejecutar el resto de la l gica de negocio si es que existe y corresponde hacerlo para alcanzar el resultado final de la transacci n Una vez el coordinador reciba un mensaje de Readon1 y de este participante no intentar enviar los mensajes de Commit O Rollback al determinar el resultado de la transacci n Si la ejecuci n del m todo onPrepare retorna un valor null se asumir Vote ABORTED COMO resultado de la operaci n onCommit En este m todo se debe implementar la l gica a realizar al recibir el mensaje de commit Usualmente el resultado de ejecutar este m todo es hacer permanentes los cambios realizados en el m todo onPrepare onRollback En este m todo se debe implementar la l gica a realizar al recibir el mensaje de rollback desde el coordinador Un mensaje de rollback significa que el coordinador determin que la transacci n no se puede confirmar con xito por lo que todos los participantes deben deshacer sus cambios La l gica de este m todo debe entonces revertir los cambios en el sistema hechos durante la ejecuci n de la l gica de onPrepare Si bien se puede optar por dejar in
8. ar si todos los participantes pueden confirmar o cancelar la operaci n sin repercusiones Por lo tanto la implementaci n de este m todo debe dejar al sistema en un estado en el que tanto si el siguiente mensaje recibido es commit O S1 es rollback se asegura que las dos operaciones podr n realizarse sin errores Este m todo retorna un objeto de tipo Vote Este objeto determina el resultado del m todo y el sistema lo utiliza para saber si la transacci n puede continuar y c mo manejar a este participante durante el resto de la coordinaci n Los valores que presenta este enumerado son los siguientes Valor Significado Vote PREPARED La operaci n de preparaci n ha finalizado con xito Retorne este valor si puede asegurar que en el estado actual del sistema puede ejecutar con xito tanto la operaci n onCommit como la operaci n o ece Vote ABORTED La operaci n de preparaci n no pudo finalizar con xito Retorne este valor si surge alg n error durante la ejecuci n de la preparaci n o si no puede asegurar que tanto la operaci n onCommit como la Operaci n onRollback pueden terminar con xito S1 retorna este valor aseg rese de cancelar la operaci n ya sea ejecutando la l gica del m todo onro11back u otra l gica acorde con el estado del sistema Una vez el coordinador reciba un mensaje de Aborted de este participante no intentar enviar el mensaje de Rollback al determinar el resultado de la transacci n
9. e negocio han concluido se puede invocar al m todo commit para completar la transacci n La invocaci n a este m todo retornar true si el resultado final de la transacci n es exitoso O false si por alg n motivo la transacci n fue abortada por ejemplo la falla de un participante o el final del tiempo permitido para la transacci n En caso de que se decida abortar la transacci n por ejemplo si uno de los participantes no retorna el resultado esperado entonces la transacci n puede terminarse invocando al m todo rollback de la misma forma que se invoca el m todo commi t Es una pr ctica recomendable que el c digo de ejecuci n de la transacci n est dentro de un bloque try catch y que al levantarse un error se invoque al m todo rollback Esto logra que ante cualquier evento inesperado durante la ejecuci n aborte la transacci n 5 Publicaci n de servicios coordinados Los servicios que una aplicaci n de negocios exponga a otras aplicaciones no necesariamente deben ser publicados como servicios web Sin embargo la coordinaci n de las aplicaciones s se llevar a cabo mediante servicios web por lo que el primer paso para lograr una aplicaci n coordinada es publicar los servicios necesarios para la coordinaci n Esto se hace invocando en la clase AtomicTransactionManagerImpl al m todo initializelnstance O en su defecto al m todo getInstance que a su vez invoca al primero al ser llamado por primera vez Ateo de
10. esn aP eo Oca Cion Do gt lt property name hibernate connection autocommit value true gt lt property name hibernate dialect value org hibernate dialect MySQL5InnoDBDialect gt lt property name hibernate hbm2ddl auto value update gt lt properties gt lt persistence unit gt lt persistence gt As mismo comprobar que la base de datos utilizada tenga soporte para campos de tipo Blob o Text algunas bases de datos no proveen soporte para este tipo de campos Debe asegurarse de que los paquetes con los drivers de Hibernate para acceder a la base de datos est n incluidos en el classpath de la aplicaci n Por ejemplo si se distribuye los drivers de MySQL bajo una carpeta lib bajo el directorio ra z de la aplicaci n puede ejecutarse usando el comando java cp myapp jar lib mysql connector java 5 1 7 bin jar mypackage MyMainClass 4 Ciclo de vida de una transacci n Para iniciar una nueva transacci n se utiliza la clase s ngleton org ombu logic AtomicTransactionManagerImpl Esta clase provee los m todos begin commit y rollback para poder iniciar una transacci n y determinar el resultado de sta A continuaci n se muestra un ejemplo del uso de esta clase e e e e e e e e e e e e e e e e E E E E E E E 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 E 5 E E 5 5 5 5 5 5 5 5 5 5 5 5 N 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 e m 5 m m m m m m m m m m 5 m m 5 5 5 5 5 5 5 5
11. formaci n de auditor a o indicios de que la transacci n se intent llevar a cabo el resultado final no debe tener ning n impacto en el resto del sistema 10 5 2 1 Estrategias para la implementaci n Existen varias alternativas sobre c mo implementar los m todos onPrepare onCommit y onRollback de forma que el resultado final sea consistente La siguiente tabla describe algunos de los posibles enfoques onPrepare Almacenar los cambios planificados sin ejecutarlos Ejecutar los cambios haci ndolos visibles Guardar informaci n para deshacerlos Almacenar el estado original prevenir acceso externo ejecutar los cambios Ejecutar los cambios marcarlos como provisorios hacerlos visibles onCommit Ejecutar los cambios almacenados Eliminar la informaci n para deshacer los cambios Permitir el acceso liberar los bloqueos Marcar los cambios realizados como definitivos onRollback Borrar los cambios almacenados sin haberlos ejecutado Ejecutar las acciones para deshacer los cambios Restaurar el estado original permitir el acceso liberar los bloqueos Eliminar los cambios realizados O marcarlos como cancelados 5 3 Registrar el Manager para los servicios Comentarios La ejecuci n de onPrepare podr a incluir validaciones Es un enfoque de compensaci n Este es un enfoque t pico en una base de datos Este enfoque conserva evidencia del intento de transacci n
12. ione correctamente Esta informaci n debe ser provista en un archivo ombu properties en una subcarpeta conf bajo el directorio ra z de la aplicaci n El archivo de configuraci n ombu properties es un archivo de configuraci n con pares clave valor La siguiente tabla describe las posibles claves y su funci n en el archivo de configuraci n coordination service wsdl coordination service targetNameSpace coordination service name at services initiator binding_url at services participant binding_url at services initiator published url at services participant published url persistence unit URL donde est publicado el wsdl del de activaci n del coordinador Por ejemplo pois US eco rancios Aerial mee rvice wsdl Namespace del servicio que contiene la operaci n createCoordinationContext para crear un contexto Por ejemplo http docs oasis open org ws tx wscoor 2006 06 Nombre del servicio que contiene la operaci n createCoordinationContext Por ejemplo CoordinationService URL donde la librer a publicar los servicios para el protocolo Completion Por ejemplo httpi 70 0 0 0 20090 myapp 1nitiator Al usar la direcci n 0 0 0 0 el servicio se publica en todas las interfaces activas del equipo Idem anterior para los servicios de los protocolos TwoPhaseCommit la librer a los gestiona en un nico Servicio URL donde la aplicaci n coordinadora deber a consumir l
13. nager para poder ejecutar su l gica public static void main string args o ta lia loss eiyiteios del eco rd a co AtomicTransactionManagerlmpl initializelnstancel Registrar una instancia de DebitManager para ejecutar La Tlogica de la operaci n debit TwoPhaseCommitParticipantSevice getinstance l registerParticipantManager debit new DebitManager Publicar el servicio de negocio como un servicio web oering deb loas o calnos oo Banka lic aiton Endpoint PUOIS h debitUrl new BankApplication AAA AA A e E E E E E E E E E E E E S E E E E E S S E S E E S E S E S E S E E S E E S S E S S E S S S S S S E E S S S E S E S E S E E E E S S E S E E E S S E E E E S S S E E E S S E O E O S N E O E O S S E O E S S E O S S E N E E E S S E a E e m e m e e e a a a a m a t a a a a a a m a a a a a l 5 4 Registrar participantes en la transacci n Una vez que se implement la l gica de negocio en las clases Manager se debe conseguir que esta l gica sea ejecutada Adem s la l gica que se ejecutar en la invocaci n a los servicios de negocio no ha sido definida Es en esta l gica que se lleva a cabo el registro de un participante en la transacci n Durante la ejecuci n de un m todo de un servicio de negocio coordinado no se ejecutar la l gica de negocio como se harfa en un servicio no coordinado En su lugar la invocaci n al servicio de negocio debe cumplir dos funciones e Primero registrar un nuevo partici
14. os servicios para el protocolo Completion Esta URL puede ser distinta a la de la propiedad binding Por ejemplo si se usa la direcci n 0 0 0 0 para publicar los servicios o si el equipo est detr s de una NAT y debe accederse a trav s de un servidor virtual Idem anterior para los servicios de protocolo TwoPhaseCommit Nombre de la persistence_unit que se usar para almacenar los datos de coordinaci n M s sobre este par metro a continuaci n 3 1 Configuraci n de la base de datos La API necesita de una base de datos donde almacenar informaci n de coordinaci n El acceso a esta base de datos se realiza a trav s del framework Hibernate lo que asegura compatibilidad con casi cualquier base de datos que provea un driver para este framework Para configurar el acceso a la base de datos se necesita e Definir la propiedad persistence_unit en el archivo de configuraci n de la aplicaci n ver siguiente punto e Definir una persistence unit para la aplicaci n Esto debe hacerse en el archivo persistence xml en la carpeta META INF bajo el directorio ra z de la aplicaci n Esta persistence unit cumplir los siguientes requisitos o Debe declarar las entidades org ombu model CoordinationContext org ombu model Participant org ombu model CompletionParticipant org ombu model TwoPhaseCommitParticipant o Debe definir la propiedad hibernate hbm2ddl auto con un valor que ermita la creaci
15. pante en la transacci n e Segundo almacenar la informaci n de negocio intercambiada los par metros recibidos para poder acceder a ella desde los m todos del Manager El registro del nuevo participante se realiza a trav s del m todo registerTwoPhaseCommitParticipant que provee la clase AtomicTransactionManagerImp1 Este m todo registra un nuevo participante en la transacci n invocando al servicio correspondiente del coordinador y retorna un objeto del tipo TwoPhaseCommitParticipant Este m todo recibe los siguientes par metros 12 Par metro Descripci n CoordinationContext context Es el contexto obtenido de la transacci n en la que se quiere registrar el participante Este objeto probablemente haya sido enviado desde la aplicaci n que inici la transacci n a trav s de los par metros del servicio de negocio String operation El nombre de la operaci n de negocio Este nombre se utilizar al recibir mensajes de coordinaci n para determinar cu l es el Manager que se debe ejecutar TwoPhaseCommitParticipant Type type Opcional Determina el tipo de protocolo TwoPhaseCommit que se utilizar Durable O Volatile Por defecto Durable 13
Download Pdf Manuals
Related Search
Related Contents
MANUALE ILLY 15931/01 Grille d`évaluation de la dégradation de l`habitat. Mode d`emploi BETRIEBSANLEITUNG Monnayeur-rendeur Ultra A5 - Abelko Innovation Série Compact de Raytek Principaux avantages Fiche センターだより 第12号 - 総合機器センター Índices de calidad de sitio de Populus nigra `Italica` en plantaciones MoAnLtg_RM40Li VdS_NEU.indd Copyright © All rights reserved.
Failed to retrieve file