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
[email protected]
http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to