2016-05-20 87 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。