I have a problem with this configuration[1]. When I call this proxy service with the 3 DB online it work with no problem. It insert the data in each DB.
But when one DB is down, this configuration must call the myFaultHandlerTransac sequence and do a rollback, but in this case I receive an error[2] in ESB console, so the system don´t do the rollback, I check in each DB, and another error occurred due to a time out[3] event with <property name="OUT_ONLY" value="true"/> in proxy configuration. [1] This is my proxy service: <proxy xmlns="http://ws.apache.org/ns/synapse" name="DirectorioEstudiantesMultiProxyTransac" transports="https http" startOnLoad="true" trace="disable"> <target faultSequence="myFaultHandlerTransac"> <inSequence> <transaction action="new"/> <log level="custom"> <property name="text" value="** Guardar en las BDs usando BDReport**"/> </log> <dbreport useTransaction="true"> <connection> <pool> <!-- my pool data--> </pool> </connection> <statement> <sql> <!-- my sql0 sentence--> </sql> <!-- my parameter data--> </statement> </dbreport> <dbreport useTransaction="true"> <connection> <pool> <!-- my pool data--> </pool> </connection> <statement> <sql> <!-- my sql1 sentence--> </sql> <!-- my parameter data--> </statement> </dbreport> <dbreport useTransaction="true"> <connection> <pool> <!-- my pool data--> </pool> </connection> <statement> <sql> <!-- my sql2 sentence--> </sql> <!-- my parameter data--> </statement> </dbreport> <transaction action="commit"/> <property name="OUT_ONLY" value="true"/> </inSequence> </target> <publishWSDL uri="http://127.0.0.1:9763/services/DirectorioEstudiantes?wsdl"/> <parameter name="useOriginalwsdl">false</parameter> </proxy> This is my fault sequence: <sequence xmlns="http://ws.apache.org/ns/synapse" name="myFaultHandlerTransac"> <log level="custom"> <property name="text" value="** Rollback Transaction**"/> </log> <transaction action="rollback"/> <send/> </sequence> [2] This is the error in ESB console: [2011-12-03 11:55:17,656] INFO - LogMediator text = ** Rollback Transaction** [2011-12-03 11:55:17,766] INFO - TimeoutHandler This engine will expire all callbacks after : 86400 seconds, irrespective of the timeout action, after the specimeout [2011-12-03 11:55:17,781] ERROR - ClientUtils The system cannot infer the transport information from the /services/DirectorioEstudiantesMultiProxyTransac.DirectoProxyTransacHttpSoap 12Endpoint URL. [2011-12-03 11:55:17,781] ERROR - Axis2Sender Unexpected error during sending message out org.apache.axis2.AxisFault: The system cannot infer the transport information from the /services/DirectorioEstudiantesMultiProxyTransac.DirectorioEstudiantesMult ap12Endpoint URL. at org.apache.axis2.description.ClientUtils.inferOutTransport(ClientUtils.java: 81) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.ex ecuteImpl(DynamicAxisOperation.java:123) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPCl ient.java:441) at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:57) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvir onment.java:271) at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java: 84) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediat or.java:60) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator. java:114) at org.apache.synapse.mediators.MediatorFaultHandler.onFault(MediatorFaultHandl er.java:81) at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:102) at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServi ceMessageReceiver.java:183) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HT TPTransportUtils.java:172) at org.apache.synapse.transport.nhttp.ServerWorker.processEntityEnclosingMethod (ServerWorker.java:408) at org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:259) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerP ool.java:173) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja va:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9 08) at java.lang.Thread.run(Thread.java:619) [3] [2011-12-03 11:56:17,984] INFO - HTTPSender Unable to sendViaPost to url[http://localhost:8280/services/DirectorioEstudiantesMultiProxyTransac.Di rectorioEstudiaacHttpSoap12Endpoint] java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:237) at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106) at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:11 16) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnect ionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413) at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.j ava:1973) at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.jav a:1735) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:109 8) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethod Director.java:398) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDir ector.java:171) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTT PSender.java:621) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithC ommons(CommonsHTTPTransportSender.java:449) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTT PTransportSender.java:276) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperatio n.java:406) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisO peration.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531) at org.apache.jsp.admin.jsp.WSRequestXSSproxy_005fajaxprocessor_jsp._jspService (WSRequestXSSproxy_005fajaxprocessor_jsp.java:272) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3 32) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:161) at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPat hServletAdaptor.java:36) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest( ServletRegistration.java:90) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxySer vlet.java:111) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet. java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:164) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application FilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh ain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja va:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja va:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase .java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164 ) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100 ) at org.wso2.carbon.server.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThr eadDetectionValve.java:154) at org.wso2.carbon.server.TomcatServer$1.invoke(TomcatServer.java:254) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java :118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java: 396) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(H ttp11NioProtocol.java:356) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java: 1534) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja va:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9 08) at java.lang.Thread.run(Thread.java:619) Saludos, Ing. Jorge Infante Osorio. J´Dpto Soluciones SOA. CDAE. Fac. 5. UCI. De: carbon-dev-boun...@wso2.org [mailto:carbon-dev-boun...@wso2.org] En nombre de Jorge Infante Osorio Enviado el: martes, 29 de noviembre de 2011 16:02 Para: carbon-dev@wso2.org Asunto: [Carbon-dev] problem with a transaction in ESB. Hi all. I have a proxy Service that do the follow: Receive a message from a client and create a clone this message three times. Each clone message pass through a sequence. In each sequence, I do a call to a DBReport mediator and I store the message information into a different DB. My idea and the use of sequences, are based in the idea to use transactions features. If I insert data in DB1 and DB2, and fail in DB3 I want to do a rollback in DB1 and DB2. In Insequence mediator I put <transaction action="new"/> before clone and after clone I put <transaction action="commit"/>. Them inside each sequence with DBReport I put <dbreport useTransaction="true"> <inSequence> <transaction action="new"/> <log level="custom"> <property name="text" value="** Clonando y enviando mensajes **"/> </log> <clone> <target sequence="insertar_clones"/> <target sequence="insertar_clones1"/> <target sequence="insertar_clones2"/> </clone> <transaction action="commit"/> <property name="OUT_ONLY" value="true"/> </inSequence> A sequence sample: <sequence xmlns="http://ws.apache.org/ns/synapse" name="insertar_clones"> <dbreport useTransaction="true"> <connection> <pool> <password></password> <user> </user> <url>jdbc:postgresql://127.0.0.1:5432/pruebas</url> <driver>org.postgresql.Driver</driver> </pool> </connection> <statement> <sql>INSERT INTO estudiantes VALUES(?,?,?,?,?)</sql> </statement> </dbreport> </sequence> The error when BD3 is down: TID: [] [WSO2 ESB] [2011-11-27 08:47:59,968] INFO {org.apache.synapse.mediators.builtin.LogMediator} - text = ** Rollback Transaction** {org.apache.synapse.mediators.builtin.LogMediator} TID: [] [WSO2 ESB] [2011-11-27 08:48:00,078] ERROR {org.apache.synapse.mediators.transaction.TransactionMediator} - Unable to rollback transaction {org.apache.synapse.mediators.transaction.TransactionMediator} java.lang.IllegalStateException: This method needs a transaction for the calling thread and none exists. Possible causes: either you didn't start a transaction, it rolledback due to timeout, or it was committed already. ACTIONS: You can try one of the following: 1. Make sure you started a transaction for the thread. 2. Make sure you didn't terminate it yet. 3. Increase the transaction timeout to avoid automatic rollback of long transactions; check http://www.atomikos.com/Documentation/JtaProperties for how to do this. at com.atomikos.icatch.jta.TransactionManagerImp.raiseNoTransaction(Transaction ManagerImp.java:123) at com.atomikos.icatch.jta.TransactionManagerImp.rollback(TransactionManagerImp .java:518) at com.atomikos.icatch.jta.UserTransactionImp.rollback(UserTransactionImp.java: 140) at org.wso2.carbon.atomikos.TransactionFactory$TransactionManagerWrapper.rollba ck(TransactionFactory.java:87) at org.apache.synapse.mediators.transaction.TransactionMediator.mediate(Transac tionMediator.java:78) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediat or.java:60) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator. java:114) at org.apache.synapse.mediators.MediatorFaultHandler.onFault(MediatorFaultHandl er.java:81) at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:102) at org.apache.synapse.mediators.MediatorWorker.run(MediatorWorker.java:75) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja va:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9 08) at java.lang.Thread.run(Thread.java:619) It´s possible to implement this idea?? Saludos, Ing. Jorge Infante Osorio. J´Dpto Soluciones SOA. CDAE. Fac. 5. UCI. Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU! http://www.antiterroristas.cu http://justiciaparaloscinco.wordpress.com _______________________________________________ Carbon-dev mailing list Carbon-dev@wso2.org http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev