Ich habe zwei Webservices mit Spring Boot Framework entwickelt und ich habe sie im selben Projekt. Jeder Webservice verwendet eine andere DB, zB ws1 verwendet Oracle1 und ws2 Oracle2. Ich habe eine DataBaseConfig mit der Definition der Beans definiert, aber wenn ich die App benutze, arbeitet immer ein Webservice (und es ist immer derselbe).SpringBoot Web Services mehrere Datenquellen nur eine funktioniert
DataBaseConfig
@Configuration
public class DataBaseConfig {
@Bean(name = "ora1")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource mysqlDataSource() {
return DataSourceBuilder.create().build();}
@Bean(name = "ora2")
@ConfigurationProperties(prefix="spring.secondDatasource")
public DataSource sqliteDataSource() {
return DataSourceBuilder.create().build();}
@Bean(name = "clients")
@Autowired
@ConfigurationProperties(prefix = "spring.datasource")
@Qualifier("datasource")
public JdbcTemplate slaveJdbcTemplate(DataSource datasource) {
return new JdbcTemplate(datasource); }
@Bean(name = "places")
@Autowired
@Primary
@ConfigurationProperties(prefix = "spring.secondDatasource")
@Qualifier("secondDatasource")
public JdbcTemplate masterJdbcTemplate(DataSource secondDatasource) {
return new JdbcTemplate(secondDatasource);}
}
Ich habe die Dienste Definition mit den SQL-Anweisungen und die Definition
@Service
public class ClientsService {
@Autowired
@Qualifier("clients")
private JdbcTemplate jdbcTemplate;
und den anderen Dienst
@Service
public class PlacesService {
@Autowired
@Qualifier("places")
private JdbcTemplate jdbcTemplate;
Dann in jedem Controller I de-Mapping habe @RequestMapping. Wenn ich die App starte, habe ich keine verbindungsbedingten Fehler und wenn ich die Webservices in 2 Projekten teile, funktioniert alles gut.
Anstelle von '@Qualifier (" Datenquelle ")' und '@Qualifier (" zweiteDatenquelle ")' sollte es '@Qualifier (" ora1 ")' und '@Qualifier (" ora2 ")' sein, sollte es nicht ? – alfcope
Ich habe das versucht, funktioniert aber immer noch nicht. Die ws, die funktioniert, ist nicht die eine, die als 'Primary' festgelegt wurde. Der Fehler, den ich für die Webservice 'Clients' bekomme, ist ORA-00942: Tabelle oder View existiert nicht, aber die Query funktioniert (ich habe auch die Webservices in separaten Projekten korrekt ausgeführt) – lorenag83