2017-06-13 24 views
0

我有兩個數據源是相同的結構,但沒有在他們的數據。 我的應用程序必須同時處理它們兩個。 我有看起來像這樣的控制器,服務器,dao結構。春季多個transactionmanagers類似的數據源

控制器型號名稱:

@Controller 
public abstract class MyFancyControllerModell{ 
    private MyService service; 

    public MyFancyControllerModell (MyService service){ 
     this.service = service; 
    } 

    @RequestMapping(....) 
    public void editSomeData(String data){....} 
} 

控制器實現:

@Controller 
@RequestMapping(...) 
public class MyControllerImpl1 extends MyFancyControllerModell{ 
    @Autowired 
    public MyControllerImpl1(@Qualifier("myServiceInstance1") MyService service){ 
     super(service); 
    } 
} 

@Controller 
@RequestMapping(...) 
public class MyControllerImpl2 extends MyFancyControllerModell{ 
    @Autowired 
    public MyControllerImpl2(@Qualifier("myServiceInstance2") MyService service){ 
     super(service); 
    } 
} 

,服務:

public class MyService{ 
    private MyDao myDao; 

    public MyService(MyDao myDao){ 
     this.myDao = myDao; 
    } 

    @Transactional 
    public void editSomeData(String data){...} 
} 

我創造我的配置類中的豆類是這樣的:

private DataSource lookupDataSource(final String jndiName) { 
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup(); 
    dsLookup.setResourceRef(true); 
    return dsLookup.getDataSource(jndiName); 
} 

@Bean 
public DataSource dataSource1(){ 
    return lookUpDataSource("dataSource1"); 
} 

@Bean 
public DataSource dataSource2(){ 
    return lookUpDataSource("dataSource2"); 
} 

@Bean 
public MyService myServiceInstance1(@Qualifier("dataSource1") DataSource dataSource){ 
    return new(MyService(new MyDao(dataSource)))); 
} 

@Bean 
public MyService myServiceInstance1(@Qualifier("dataSource1") DataSource dataSource){ 
    return new(MyService(new MyDao(dataSource))); 
} 

我的問題是,是否有可能爲兩個數據源創建transactionmanagers,而無需在服務層中聲明使用哪個transactionmanager?

我試圖創建它們就像服務的bean,但沒有奏效。

回答

0

退房這裏涉及到事務管理以前quesion答案...

https://stackoverflow.com/a/1961853/7504001

+0

https://stackoverflow.com/q/1961566/7504001 –

+0

感謝。目前我們的tomcats無法處理JTA。所以這個想法是要找到另一種方式。但它似乎是JTA是唯一實用的解決方案。所以我們必須重新配置我們的tomcats。 –