diff --git a/geoportal-service/CHANGELOG.md b/geoportal-service/CHANGELOG.md
index d89cf4e..1293451 100644
--- a/geoportal-service/CHANGELOG.md
+++ b/geoportal-service/CHANGELOG.md
@@ -2,6 +2,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for org.gcube.application.geoportal-service
+
+## [v1.0.9-SNAPSHOT] 2021-09-20
+- Fixes [#23381](https://support.d4science.org/issues/23381)
+
## [v1.0.8] 2021-09-20
- Logging
- Fixes [#22193](https://support.d4science.org/issues/22193)
diff --git a/geoportal-service/pom.xml b/geoportal-service/pom.xml
index b837b74..dd39c83 100644
--- a/geoportal-service/pom.xml
+++ b/geoportal-service/pom.xml
@@ -4,7 +4,7 @@
4.0.0
org.gcube.application
geoportal-service
- 1.0.8
+ 1.0.9-SNAPSHOT
Geoportal Service
war
diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/postgis/PostgisDBManager.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/postgis/PostgisDBManager.java
index 571c84e..5184e1d 100644
--- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/postgis/PostgisDBManager.java
+++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/postgis/PostgisDBManager.java
@@ -17,49 +17,57 @@ import java.util.regex.Pattern;
@Slf4j
public class PostgisDBManager implements PostgisDBManagerI {
- @Synchronized
- public static PostgisDBManager get() throws SQLException, ConfigurationException {
- if(config==null) {
- log.debug("Looking for Default Configuration.. ");
+// @Synchronized
+// public static PostgisDBManager get() throws SQLException, ConfigurationException {
+// if(config==null) {
+// log.debug("Looking for Default Configuration.. ");
+//
+// // TODO GENERIC
+// DatabaseConnection defaultConfiguration=
+// ImplementationProvider.get().getIsProvider().getIS().queryForDB("postgis", "Concessioni");
+//
+// log.debug("Found configuration : "+defaultConfiguration);
+// config=defaultConfiguration;
+// }
+// return new PostgisDBManager();
+// }
+//
+//
- // TODO GENERIC
- DatabaseConnection defaultConfiguration=
- ImplementationProvider.get().getIsProvider().getIS().queryForDB("postgis", "Concessioni");
- log.debug("Found configuration : "+defaultConfiguration);
- config=defaultConfiguration;
- }
- return new PostgisDBManager();
+ public static PostgisDBManagerI get() throws SQLException, ConfigurationException {
+ return get(false);
}
- public static PostgisDBManagerI get(boolean autocommit) throws SQLException, ConfigurationException {
- PostgisDBManager toReturn=get();
+
+ private static PostgisDBManagerI get(boolean autocommit) throws SQLException, ConfigurationException {
+ DatabaseConnection config=
+ ImplementationProvider.get().getIsProvider().getIS().queryForDB("postgis", "Concessioni");
+ log.debug("Found configuration : "+config);
+ PostgisDBManager toReturn=new PostgisDBManager(config);
toReturn.conn.setAutoCommit(autocommit);
return toReturn;
}
- private static DatabaseConnection config;
+
+
+// private static DatabaseConnection config;
- private static Connection getConnection() throws SQLException {
-
- Connection toReturn= DriverManager.getConnection(config.getUrl(),config.getUser(),config.getPwd());
-
- //TODO configure behaviour
- toReturn.setAutoCommit(false);
- return toReturn;
- }
-
-
private Connection conn=null;
+ private DatabaseConnection config;
+ private PostgisDBManager(DatabaseConnection config) throws SQLException {
+ this.config=config;
+ log.info("Opening connection to {}",config);
+ conn= DriverManager.getConnection(config.getUrl(),config.getUser(),config.getPwd());
- private PostgisDBManager() throws SQLException {
- conn=getConnection();
+ //TODO configure behaviour
+ conn.setAutoCommit(false);
}
@Override
diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/PostgisConnectionProvider.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/PostgisConnectionProvider.java
index 26a2e9c..60a8b24 100644
--- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/PostgisConnectionProvider.java
+++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/PostgisConnectionProvider.java
@@ -1,19 +1,23 @@
package org.gcube.application.geoportal.service.engine.providers;
import org.gcube.application.geoportal.service.engine.postgis.PostgisDBManager;
+import org.gcube.application.geoportal.service.engine.postgis.PostgisDBManagerI;
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
import java.sql.SQLException;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
-public class PostgisConnectionProvider extends AbstractScopedMap{
+public class PostgisConnectionProvider extends AbstractScopedMap{
public PostgisConnectionProvider() {
super("Postgis connection descriptor cache");
+ setTTL(Duration.of(30, ChronoUnit.SECONDS));
}
@Override
- protected PostgisDBManager retrieveObject() throws ConfigurationException {
+ protected PostgisDBManagerI retrieveObject() throws ConfigurationException {
try {
return PostgisDBManager.get();
} catch (SQLException throwables) {
@@ -22,7 +26,7 @@ public class PostgisConnectionProvider extends AbstractScopedMap