021-01-25 16:14:08.514 SvUSService [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2021-01-25 16:14:08.555 SvUSService [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3a720ae3] was not registered for synchronization because synchronization is not active
2021-01-25 16:14:27.852 SvUSService [main] ERROR com.zaxxer.hikari.pool.HikariPool - masterpool - Exception during pool initialization.
net.ucanaccess.jdbc.FeatureNotSupportedException: Feature not supported.
at net.ucanaccess.jdbc.UcanaccessConnection.setCatalog(UcanaccessConnection.java:704)
at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:428)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:374)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:169)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)
at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82)
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:338)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:143)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy285.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
at com.sun.proxy.$Proxy89.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy238.selectByExample(Unknown Source)
at org.skyviewpacs.service.service.impl.ArchiveConfigImpl.getAllArchiveMappingsForCache(ArchiveConfigImpl.java:149)
at org.skyviewpacs.service.service.impl.ArchiveConfigImpl$$FastClassBySpringCGLIB$$fc9cecd9.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at org.skyviewpacs.service.service.impl.ArchiveConfigImpl$$EnhancerBySpringCGLIB$$8f57ad20.getAllArchiveMappingsForCache(<generated>)
at org.skyviewpacs.service.task.CommonConfigCacheLoadTask.putLogicalFieldInCache(CommonConfigCacheLoadTask.java:81)
at org.skyviewpacs.service.task.CommonConfigCacheLoadTask.run(CommonConfigCacheLoadTask.java:126)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:794)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at org.skyviewpacs.us.SkyViewUsService.main(SkyViewUsService.java:23)
数据源如下:
package org.skyviewpacs.model.datasource;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@MapperScan(basePackages = {
"org.skyviewpacs.model.dao.master1" }, sqlSessionFactoryRef = "masterSqlSessionFactory1", sqlSessionTemplateRef = "sqlSessionTemplateMaster1")
public class SqlSessionFactoryMaster1 {
@Bean(name = "masterdb1")
@ConfigurationProperties(prefix = "spring.datasource.master1")
public HikariDataSource masterdb() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Primary
@Bean(name = "dynamicDataSource2")
public DataSource dynamicDataSource() {
SkyviewDynamicDataSource dynamicDataSource = new SkyviewDynamicDataSource();
// 默认数据源
dynamicDataSource.setDefaultTargetDataSource(masterdb());
// 配置多数据源
Map<Object, Object> dsMap = new HashMap<Object, Object>();
dsMap.put(SkyviewDBS.DB_MASTER1, masterdb());
dynamicDataSource.setTargetDataSources(dsMap);
return dynamicDataSource;
}
@Bean
public SqlSessionFactory masterSqlSessionFactory1(@Qualifier("dynamicDataSource2") DataSource dynamicDataSource)
throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dynamicDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:org/skyviewpacs/model/dao/master1/*.xml"));
factoryBean.setConfigLocation(
new DefaultResourceLoader().getResource("classpath:mybatis-config.xml"));
return factoryBean.getObject();
}
@Bean(name = "masterTransactionManager1")
public DataSourceTransactionManager basecloudTransactionManager1() {
return new DataSourceTransactionManager(dynamicDataSource());
}
@Bean
public SqlSessionTemplate sqlSessionTemplateMaster1() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(masterSqlSessionFactory1(dynamicDataSource())); // 使用上面配置的Factory
return template;
}
}
数据库配置如下:
spring.datasource.master.jdbcUrl= jdbc:sqlserver://192.168.50.141:1433;DatamasterName=masterdb_us2
spring.datasource.master.username = sa
spring.datasource.master.password = pacs
spring.datasource.master.catalog=masterdb_us2
spring.datasource.master.schema=dbo
spring.datasource.master.connectionTimeout=30000
spring.datasource.master.maxLifetime=900000
spring.datasource.master.maximumPoolSize=50
spring.datasource.master.poolName=masterpool
数据源为spring.datasource.master1
数据库配置为spring.datasource.master
只需要把数据库配置改成spring.datasource.master1即可