之前做过多个数据源切换,不过ORM是ibatis,未出现此问题。楼主可以试下 sleep一下 

解决方案 »

  1.   

    这正是用线程的好时候了,
    A线程去管A数据源,B线程去管B数据源
      

  2.   


       public Connection getConnection() throws SQLException { 
            return createDataSource().getConnection(); 
        } 
        public Connection getConnection(String username, String password) 
                throws SQLException { 
            return createDataSource().getConnection(username, password); 
        } 
        /** 
         * @return Returns the dataSourceMap. 
         */ 
        public Map getDataSourceMap() { 
            return dataSourceMap; 
        } 
        /** 
         * @param dataSourceMap 
         *            The dataSourceMap to set. 
         */ 
        public void setDataSourceMap(Map dataSourceMap) { 
            this.dataSourceMap = dataSourceMap; 
        } 
        
      

  3.   


    protected BasicDataSource createDataSource() throws SQLException { 
            String sp = (String) SpObserver.getSp(); 
            if (sp == null) { 
                throw new SQLException( 
                        "Cannot create datasource because of missing sp"); 
            } 
            String dataSourceName = "dataSource" + sp; 
            BasicDataSource dataSource = (BasicDataSource) dataSourceMap 
                    .get(dataSourceName); 
            return dataSource; 
        } public class SpObserver { 
        private static ThreadLocal local=new ThreadLocal(); 
        
        public static void putSp(Object sp){ 
            local.set(sp); 
        } 
        
        public static Object getSp(){ 
            return local.get(); 
        } 
      

  4.   


    sleep试过了  没用。。