Managing transactions in iPOJO

76 views Asked by At

I define a transaction is a set of continuous activities (one method or set of methods) in a component.

I wrote a simple example as follows:

//service interface
public interface Hello {
    String sayHello(String name);
    String sayBonjour(String name);
}

//service implementation 
@Component
public class HelloImpl implements Hello {  

    public String sayHello(String name) {
       //start local transaction
       return "hello " + name; 
       //finish local transaction
    }
    public String sayBonjour(String name) {
       //start local transaction
       return "bonjour " + name; 
       //finish local transaction
    }
}

//client
@Component
public class Client {

   Hello client;
   public Client() {
      //start local transaction
      client.sayBonjour(client.sayHello("world"));
      //finish local transaction 
   }
  }

In this example, there are local transactions in the components HelloImpl and Client. I define that global transaction of the system consists of a set of local transactions through all components.

How to manage transactions (global transaction and the local transtions in this example) in OSGi or iPOJO ?

Regards,

1

There are 1 answers

0
HNT On

As in the example, when the client calls "client.sayBonjour(client.sayHello("world"))" on HelloImpl component, the client initiates a transaction (T0) to send "world" and then send the result of sayHello("world") to the HelloImpl component. After receiving the "world", HelloImpl component initiates a subtransaction (T1) to process request and return the result "helloworld" to client. Then HelloImpl component receives also "helloworld" request (in the method sayBonjour) , it initiates a new subtransaction T2 to process it. How to know T1 and T2 serve T0 if there many clients in the same time.