2016-05-20 90 views
2

我定義的事務是組件中的一組連續活動(一種方法或一組方法)。管理iPOJO中的事務

我寫了一個簡單的例子如下:

//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 
    } 
    } 

在這個例子中,有在組件HelloImpl和客戶端的本地事務。我定義系統的全局事務由通過所有組件的一組本地事務組成。

如何在OSGi或iPOJO中管理事務(本例中爲全局事務和本地轉換)?

問候,

+0

正如你在任何其他非JEE應用程序中所做的那樣:通過使用一個'TransactionManager'作爲一個服務,這個服務可以被注入到各種組件中。 –

+0

你能給我更多的細節嗎? – HNT

+0

然後,您需要提供更多關於交易所需的信息:您是否訪問數據庫,如果是這樣(通過JPA,JDBC,...)還是需要同步遠程資源等? –

回答

0

如該示例中,當客戶端調用 「client.sayBonjour(client.sayHello(」 世界 「))」 上HelloImpl組件時,客戶端啓動事務(T0),以發送「世界「,然後將sayHello(」world「)的結果發送給HelloImpl組件。接收到「world」後,HelloImpl組件啓動一個子事務(T1)來處理請求,並將結果「helloworld」返回給客戶端。然後HelloImpl組件也接收到「helloworld」請求(在sayBonjour方法中),它啓動一個新的子事務T2來處理它。如果在同一時間有多個客戶端,如何知道T1和T2服務於T0。