This repository contains my trying to initialize different data-sources in runtime and use them to querying / handling SQL data. To do so, my starting point is in-memory h2 database. I have implemented two rest resources (GET and POST). GET resource basically showing current (by default in-memory h2) dataSource bean containing from application context. POST resource allows you create new DataSource bean in runtime and add it to dataSourcesHolder bean. lastly we are executing a SQL query to verify if that dataSource is working properly
./gradlew composeUp -Pprofile=all
bash build/libs/*.jar
# ora
http :8080/ \
query="select 1 from dual" \
springJpaDatabase=ORACLE \
springDatasourceUrl="jdbc:oracle:thin:@//127.0.0.1:1521/xe" \
springDatasourceUsername=system \
springDatasourcePassword=oraclepassword \
springDatasourceClassName="oracle.jdbc.OracleDriver"
{
"databaseProductVersion": "Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production",
"driverName": "Oracle JDBC driver",
"driverVersion": "11.2.0.4.0",
"holdingDataSources": "{ORACLE=HikariDataSource (HikariPool-2)}",
"result": {
"columnCount": 1
},
"url": "jdbc:oracle:thin:@//127.0.0.1:1521/xe",
"userName": "SYSTEM"
}
# pg
http :8080/ \
query="select 1" \
springJpaDatabase=POSTGRESQL \
springDatasourceUrl="jdbc:postgresql://0.0.0.0:5432/postgresdatabase" \
springDatasourceUsername=postgresuser \
springDatasourcePassword=postgrespassword \
springDatasourceClassName="org.postgresql.Driver"
{
"databaseProductVersion": "9.4.17",
"driverName": "PostgreSQL Native Driver",
"driverVersion": "PostgreSQL 9.4.1212.jre7",
"holdingDataSources": "{ORACLE=HikariDataSource (HikariPool-2), POSTGRESQL=HikariDataSource (HikariPool-3)}",
"result": {
"columnCount": 1
},
"url": "jdbc:postgresql://0.0.0.0:5432/postgresdatabase",
"userName": "postgresuser"
}
./gradlew composeDown -Pprofile=all
# or: docker-compose -f docker-compose-all.yaml down -v; docker-compose -f docker-compose-all.yaml rm -v
generated by jvm yeoman generator