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,
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.