Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring针对类似数据源的多个TransactionManager_Java_Spring_Transactional_Transactionmanager - Fatal编程技术网

Java spring针对类似数据源的多个TransactionManager

Java spring针对类似数据源的多个TransactionManager,java,spring,transactional,transactionmanager,Java,Spring,Transactional,Transactionmanager,我有两个数据源,它们的结构相同,但数据不同。 我的应用程序必须同时处理这两个问题。 我有控制器,服务,dao结构,看起来像这样 控制器模型: @Controller public abstract class MyFancyControllerModell{ private MyService service; public MyFancyControllerModell (MyService service){ this.service = service;

我有两个数据源,它们的结构相同,但数据不同。 我的应用程序必须同时处理这两个问题。 我有控制器,服务,dao结构,看起来像这样

控制器模型:

@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){...}
}
我在我的配置类中创建bean,如下所示:

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,而不需要在服务层声明使用哪个transactionmanager


我试着像服务一样将它们创建为bean,但没有成功。

在这里查看与事务管理器相关的先前问题的答案


谢谢。目前我们的雄猫没有能力处理JTA。所以我们的想法是找到另一条路。但看来JTA是唯一可行的解决方案。所以我们必须重新配置我们的雄猫。