transactions wso2 wso2esb wso2dss

transactions - La reversión de transacción no funciona en wso2esb4.8.0



wso2dss (1)

Suponiendo que está utilizando postgres, puede verificar si ha establecido "max_prepared_transactions" en un valor distinto de cero en "/etc/postgres/postgres.conf. También necesita la propiedad OUT_ONLY en este escenario ya que está haciendo inserciones y no está esperando cualquier respuesta. "Necesita establecer esta propiedad en ''verdadero'' en un mensaje para indicar que no se espera ningún mensaje de respuesta una vez que se reenvía desde el ESB."

Estoy usando wso2esb4.8.0 y wso2dss3.0.1.Mi problema es que deseo insertar los datos en 2 tablas, funciona bien, pero deseo aplicar la transacción para mis tablas, ambas tablas existen en la misma base de datos. Si mi 2da tabla falla en cualquier momento en que mi primera tabla debe ser revertida para que mi configuración de fuente de datos DSS es

y mi servicio de datos es así y habilité el vagón de caja para la transacción

<data disableStreaming="true" enableBoxcarring="true" name="Transaction" serviceNamespace="http://ws.wso2.org/dataservice"> <config id="default"> <property name="carbon_datasource_name">USCProduction</property> </config> <query id="insertinto_mclient" useConfig="default"> <sql>insert into mclient(clientcode,clientname,createdbyid,modifiedbyid) values(?,?,?,?)</sql> <param name="clientcode" ordinal="1" sqlType="STRING"/> <param name="clientname" ordinal="2" sqlType="STRING"/> <param name="createdbyid" ordinal="3" sqlType="BIGINT"/> <param name="modifiedbyid" ordinal="4" sqlType="BIGINT"/> </query> <query id="insertinto_mcompany" useConfig="default"> <sql>insert into mcompany(companycode,companyname,createdbyid,modifiedbyid,clientid) values(?,?,?,?,?)</sql> <param name="companycode" ordinal="1" sqlType="STRING"/> <param name="comapnyname" ordinal="2" sqlType="STRING"/> <param name="createdbyid" ordinal="3" sqlType="BIGINT"/> <param name="modifiedbyid" ordinal="4" sqlType="BIGINT"/> <param name="clientid" ordinal="5" sqlType="BIGINT"/> </query> <operation disableStreaming="true" name="insertinto_mclient_OP" returnRequestStatus="true"> <call-query href="insertinto_mclient"> <with-param name="clientcode" query-param="clientcode"/> <with-param name="clientname" query-param="clientname"/> <with-param name="createdbyid" query-param="createdbyid"/> <with-param name="modifiedbyid" query-param="modifiedbyid"/> </call-query> </operation> <operation disableStreaming="true" name="insertinto_mcompany_OP" returnRequestStatus="true"> <call-query href="insertinto_mcompany"> <with-param name="companycode" query-param="companycode"/> <with-param name="comapnyname" query-param="comapnyname"/> <with-param name="createdbyid" query-param="createdbyid"/> <with-param name="modifiedbyid" query-param="modifiedbyid"/> <with-param name="clientid" query-param="clientid"/> </call-query> </operation> </data>

Deseo insertar mis datos para que mi proxy esté configurado así

<?xml version="1.0" encoding="UTF-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="TransactionProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <log level="full"> <property name="M1" value="*************HITTING Transaction PROXY*************"/> </log> <property name="OUT_ONLY" value="true"/> <property name="companycode" expression="//companycode/text()"/> <property name="companyname" expression="//companyname/text()"/> <property name="clientcode" expression="//clientcode/text()"/> <property name="clientname" expression="//clientname/text()"/> <payloadFactory media-type="xml"> <format> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://ws.wso2.org/dataservice"> <soapenv:Header/> <soapenv:Body/> </soapenv:Envelope> </format> <args/> </payloadFactory> <log level="full"/> <callout serviceURL="http://192.168.1.201:9764/services/Transaction/" action="urn:begin_boxcar"> <source type="envelope"/> <target xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> </callout> <payloadFactory media-type="xml"> <format> <p:insertinto_mclient_OP xmlns:p="http://ws.wso2.org/dataservice"> <xs:clientcode xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:clientcode> <xs:clientname xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:clientname> <xs:createdbyid xmlns:xs="http://ws.wso2.org/dataservice">-1</xs:createdbyid> <xs:modifiedbyid xmlns:xs="http://ws.wso2.org/dataservice">-1</xs:modifiedbyid> </p:insertinto_mclient_OP> </format> <args> <arg evaluator="xml" expression="get-property(''clientcode'')"/> <arg evaluator="xml" expression="get-property(''clientname'')"/> </args> </payloadFactory> <callout serviceURL="http://192.168.1.201:9764/services/Transaction/" action="urn:insertinto_mclient_OP"> <source xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> <target xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> </callout> <payloadFactory media-type="xml"> <format> <p:insertinto_mcompany_OP xmlns:p="http://ws.wso2.org/dataservice"> <xs:companycode xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:companycode> <xs:comapnyname xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:comapnyname> <xs:createdbyid xmlns:xs="http://ws.wso2.org/dataservice">-1</xs:createdbyid> <xs:modifiedbyid xmlns:xs="http://ws.wso2.org/dataservice">-1</xs:modifiedbyid> <xs:clientid xmlns:xs="http://ws.wso2.org/dataservice">11</xs:clientid> </p:insertinto_mcompany_OP> </format> <args> <arg evaluator="xml" expression="get-property(''companycode'')"/> <arg evaluator="xml" expression="get-property(''companyname'')"/> </args> </payloadFactory> <log level="full"> <property name="message2" value="**************hitting2nd dss*****"/> </log> <callout serviceURL="http://192.168.1.201:9764/services/Transaction/" action="urn:insertinto_mcompany_OP"> <source xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> <target xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> </callout> <payloadFactory media-type="xml"> <format> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://ws.wso2.org/dataservice"> <soapenv:Header/> <soapenv:Body/> </soapenv:Envelope> </format> <args/> </payloadFactory> <callout serviceURL="http://192.168.1.201:9764/services/Transaction/" action="urn:end_boxcar"> <source type="envelope"/> <target xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> </callout> </inSequence> <outSequence> <send/> </outSequence> </target> <description/> </proxy>

Estoy enviando mis datos a través del comando CURL

curl -v -H "Accept: application/xml" -H "Content-Type:application/xml" -d ''<a><clientcode>ff</clientcode><clientname>ffff</clientname><companycode>dd</companycode><companyname>mm</companyname></a>'' http://youtility2-desktop:8290/services/TransactionProxy

la inserción funciona bien, pero revertir no funciona si creo un error en la 2da tabla, aunque la primera tabla de datos insertada no es preocupante sobre la 2da tabla. Si elimino la propiedad OUT_ONLY dando errores, seguí este blog, ingrese la descripción del enlace aquí