2017-06-13 2 views
0

私は、その構造では同じですがデータではない2つのデータソースを持っています。 私のアプリケーションは、両方のアプリケーションを同時に処理しなければなりません。 私はこのようなコントローラ、servie、DAOの構造を持っています。類似のデータソース用の複数のトランザクションマネージャーを作成する

コントローラーMODELL:

@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))); 
} 

私の質問は、どちらのtransactionmanagerが使用されているサービス層で宣言する必要なく、両方のデータソースのトランザクションマネージャを作成できますか?

サービスのようにBeanを作成しようとしましたが、うまくいきませんでした。

答えて

0

...ここトランザクションマネージャに関連する以前のquesionのための答えをチェックしてください

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

+0

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

+0

感謝。現時点では、私たちのトムキャットはJTAを扱うことができません。だからアイデアは別の方法arroundを見つけることでした。しかし、JTAは実用的な唯一の解決策だと思われます。だから私たちはトムキャットを再構成する必要があります。 –

関連する問題