2016-08-16 2 views
0

스프링 부트 응용 프로그램에서 에 두 개의 다른 datasources을 사용하고 있습니다. 컨테이너가 아래 오류로 시작되지 않습니다. 나 또한 데이터 소스 중 하나를 H2로 전환하려고했습니다. 난 여전히 같은 오류가 발생합니다.스프링 부트 응용 프로그램이 두 개의 데이터 소스로 시작하지 못했습니다.

전체 소스 코드는 here

SRC/메인/자바/

#datasource 
spring.datasource.username=test 
spring.datasource.url=jdbc:mysql://localhost:3306/user_table 
spring.datasource.password=test 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 


##secondary Datasource 
#spring.sec.datasource.username=test 
#spring.sec.datasource.url=jdbc:mysql://localhost:3306/comp_table 
#spring.sec.datasource.password=test 
#spring.sec.datasource.driver-class-name=com.mysql.jdbc.Driver 

#secondary Datasource 
spring.sec.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 
spring.sec.datasource.driverClassName=org.h2.Driver 
spring.sec.datasource.username=sa 
spring.sec.datasource.password= 
spring.sec.jpa.database-platform=org.hibernate.dialect.H2Dialect 

SRC/메인/자바/COM/기업/foo는/설정/DBConfig.java을있는 application.properties 수 있습니다

@Configuration 
public class DBConfig { 


    @Bean(name="priDataSource") 
    @Primary 
    @ConfigurationProperties(prefix="spring.datasource") 
    public DataSource priDataSource() { 
     return DataSourceBuilder.create().build(); 
    } 


    @Bean(name = "secDataSource") 
    @ConfigurationProperties(prefix="spring.sec.datasource") 
    public DataSource secDataSource() { 
     return DataSourceBuilder.create().build(); 
    } 

    @Bean(name = "jdbcPriTemplate") 
    @Autowired 
    public JdbcTemplate jdbcPriTemplate(@Qualifier("priDataSource") DataSource hostds) { 
     return new JdbcTemplate(hostds); 
    } 

    @Bean(name = "jdbcSecTemplate") 
    @Autowired 
    public JdbcTemplate jdbcSecTemplate(@Qualifier("secDataSource") DataSource secDataSource) { 
     return new JdbcTemplate(secDataSource); 
    } 

} 

SRC/메인/자바/COM/기업/foo는/A pplication.java

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

ERROR

2016-08-16 15:37:28.186 WARN 22600 --- [   main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 
2016-08-16 15:37:28.192 INFO 22600 --- [   main] o.apache.catalina.core.StandardService : Stopping service Tomcat 
2016-08-16 15:37:28.212 INFO 22600 --- [   main] utoConfigurationReportLoggingInitializer : 

Error starting ApplicationContext. To display the auto-configuration report enable debug logging (start with --debug) 


2016-08-16 15:37:28.240 ERROR 22600 --- [   main] o.s.boot.SpringApplication    : Application startup failed 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076) ~[spring-context-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851) ~[spring-context-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] 
     at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] 
     at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369) [spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:313) [spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185) [spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174) [spring-boot-1.4.0.RELEASE.jar!/:1.4.0.RELEASE] 
     at com.company.foo.Application.main(Application.java:10) [classes!/:na] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_102] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_102] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_102] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102] 
     at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [sample-proj-1.0.0-SNAPSHOT.jar:na] 
     at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [sample-proj-1.0.0-SNAPSHOT.jar:na] 
     at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [sample-proj-1.0.0-SNAPSHOT.jar:na] 
     at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:58) [sample-proj-1.0.0-SNAPSHOT.jar:na] 
Caused by: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl(DefaultPersistenceUnitManager.java:603) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.preparePersistenceUnitInfos(DefaultPersistenceUnitManager.java:443) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.afterPropertiesSet(DefaultPersistenceUnitManager.java:424) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:310) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     ... 24 common frames omitted 
Caused by: java.io.FileNotFoundException: class path resource [] cannot be resolved to URL because it does not exist 
     at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:187) ~[spring-core-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl(DefaultPersistenceUnitManager.java:600) ~[spring-orm-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] 
     ... 31 common frames omitted 
+0

속성 파일이 적절한 위치에 있습니까? 루트 –

+0

에 있어야합니다. 확실한. 당신이 그것을보고 싶다면 위의 github 레포를 연결했습니다. –

+0

예. 당신의 링크를 뿌리고 내 안드로이드에 액세스 할 수 없습니다. pc로 확인합니다. –

답변

2

오류는 문제가 EntityManagerFactory을 만드는 데하지만 당신은 명시 적으로 데이터 소스의 각각에 작성하지 않습니다 말한다. 여러 데이터 소스에 대한 Spring Data 예제를 확인하면 다른 데이터 소스를 만드는 방법을 볼 수 있습니다.

https://github.com/spring-projects/spring-data-examples/tree/master/jpa/multiple-datasources

+0

해야합니다. 일단 스프링 데이터를 종속성에서 제거하면 응용 프로그램이 오류없이 시작되었습니다. –

관련 문제