2016-05-20 11 views
2

Ich definiere eine Transaktion ist eine Reihe von kontinuierlichen Aktivitäten (eine Methode oder eine Reihe von Methoden) in einer Komponente.Verwalten von Transaktionen in iPOJO

Ich schrieb ein einfaches Beispiel wie folgt:

//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 diesem Beispiel gibt lokale Transaktionen in den Komponenten HelloImpl und Client handelt. Ich definiere, dass die globale Transaktion des Systems aus einer Menge lokaler Transaktionen über alle Komponenten besteht.

Wie verwalten Sie Transaktionen (globale Transaktion und lokale Transitionen in diesem Beispiel) in OSGi oder iPOJO?

Grüße,

+0

Wie Sie es in jeder anderen Nicht-JEE-Anwendung tun würden: indem Sie einen 'TransactionManager' verwenden, der vorzugsweise als Dienst verfügbar ist, so dass er in verschiedene Komponenten injiziert werden kann. –

+0

Könnten Sie mir bitte mehr Details geben? – HNT

+0

Dann müssen Sie weitere Informationen darüber angeben, wo die Transaktionen benötigt werden: greifen Sie auf eine Datenbank zu und wenn ja, wie (über JPA, JDBC, ...) oder müssen Sie entfernte Ressourcen synchronisieren? –

Antwort

0

Wie im Beispiel, wenn der Client "client.sayBonjour (client.sayHello (" Welt "))" auf HelloImpl Komponente aufruft, leitet der Client eine Transaktion (T0) „Welt senden "und dann das Ergebnis von sayHello (" world ") an die HelloImpl-Komponente senden. Nach dem Empfang der "Welt" initiiert die HelloImpl-Komponente eine Teiltransaktion (T1), um die Anfrage zu verarbeiten und das Ergebnis "helloworld" an den Client zurückzusenden. Dann empfängt die HelloImpl-Komponente auch die Anforderung "helloworld" (in der Methode sayBonjour) und initiiert eine neue Teiltransaktion T2, um sie zu verarbeiten. Wie zu wissen, T1 und T2 dienen T0, wenn es viele Kunden in der gleichen Zeit.