Thank you.

The exception got resolved by adding these lines.

params.put("validate connections", true);
params.put("Max connection idle time", 300);
params.put("Evictor run periodicity", 150);

There is a firewall running in DB server which terminated idle connections.

Thanks and Regards,

On Wed, Jan 24, 2024 at 6:28 AM Jody Garnett <jody.garn...@gmail.com> wrote:

> I do not think anyone is answering you as the answer depends on how you
> are using the database and what your expectations are?
>
> If your application is using the database all the time it is worth making
> use of a connection pool, to recycle connections, rather than connect to
> the database directly.
>
> If your application is in a shared environment like JavaEE you may wish to
> look up a JNDI data source and share the database connections with the rest
> of the application?
>
> If your code only talks to the database for a bit, and then is quiet it
> may be kind to do as you say and create the dataStore, use the connections
> for a bit, and then dispose of everything until next time.
> --
> Jody Garnett
>
>
> On Jan 14, 2024 at 3:33:14 AM, sunish <sunish.ku...@gmail.com> wrote:
>
>> Hello,
>>
>> I am developing an application using Geotools. The framework used for the
>> application is Quarkus. The application connects to the PostGIS database.
>>
>> Since it is a web application I want to minimize the overheads in
>> connecting to the database in each request. I want to reuse an already
>> connected database.
>>
>> I have maintained an application level DataStore object which gets
>> created when the application starts up.
>>
>> Map<String, Object> params = new HashMap<>();
>> params.put("dbtype", "postgis");
>> params.put("host", this.dbConfig.getHost());
>> params.put("port", this.dbConfig.getPort());
>> params.put("schema", "public");
>> params.put("database" ,this.dbConfig.getDatabase());
>> params.put("user", this.dbConfig.getUser());
>> params.put("passwd", this.dbConfig.getPassword());
>> params.put("preparedStatements", true);
>> params.put("encode functions", true);
>>
>> try {
>>     this.dataStore = (JDBCDataStore) DataStoreFinder.getDataStore(params);
>> } catch (IOException e) {
>>
>> Logger.getLogger(DataSourceService.class.getName()).warning(e.getMessage());
>> } catch (SQLException e) {
>>
>> Logger.getLogger(DataSourceService.class.getName()).warning(e.getMessage());
>> }
>> ---------
>>
>> Then I am using the dataStore object in the rest of the places.
>>
>> Is this the proper way of doing  or should I use DataStoreFinder each
>> time to find the datastore and dispose of the data store at the end of
>> processing request?
>> Can I plug connection pools like HikariCP to get datastore out of that
>> connection?
>>
>> When I leave the application idle for a long time I am getting  this
>> error.
>>
>> java.sql.SQLException: An I/O error occurred while sending to the backend.
>>
>> Please suggest the best way of doing it.
>>
>> Thanks in advance.
>>
>> Sunish.
>>
>>
>>
>>
>>
>> _______________________________________________
>> GeoTools-GT2-Users mailing list
>> GeoTools-GT2-Users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>>
>
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to