Bonjour

sur un développement Spring Batch, j'ai le message d'erreur suivant uniquement lorsque je tente de travailler sur ma base PostGreSql local (sur mon poste) :

PSQLException: Ce ResultSet est fermé.

Quand je change mon fichier "datasources.properties" pour travailler sur la base en environnement de dev, aucun problème (sans aucune modification du code ou du fichier datasource.xml).

Pourquoi ? La base est accessible sans problème quand j'utilise DBeaver et je peux faire des insertions, truncate, select sans problème manuellement.

Fichier datasources.properties :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# ---------------------------------#
# --- Config Datasource -----------#
# ---------------------------------#
# --- ORACLE env DEV  -- #
#datasource.driver=oracle.jdbc.OracleDriver
#datasource.url=jdbc:oracle:thin:@xx.xx.xx.xx:xxxx/xxxxx
#datasource.username=xxxx
#datasource.password=xxx
#datasource.table.prefix=xxxx_
# --- Postgres Local --- #
datasource.driver=org.postgresql.Driver
datasource.url=jdbc:postgresql://127.0.0.1:5432/xxxx
datasource.username=xxx
datasource.password=xxxx
datasource.table.prefix=xxxx_
fichier datasource.xml
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<context:property-placeholder location="classpath:datasource.properties" ignore-unresolvable="true"/>
 
    <!-- Création du data source à partir des infos contenues dans le fichier datasource.properties -->
    <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
        <property name="driverClassName" value="${datasource.driver}"/>
        <property name="url" value="${datasource.url}"/>
        <property name="username" value="${datasource.username}"/>
        <property name="password" value="${datasource.password}"/>
        <property name="initialSize" value="5"/>
    </bean>
 
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
 
    <!-- Initialisation du transaction manager utilisé par le use case -->
    <bean id="transactionManager" lazy-init="true"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
 
    <!-- Référence vers les tables utilisées par le transactionManager -->
    <batch:job-repository id="jobRepository"
                          data-source="dataSource"
                          transaction-manager="transactionManager"
                          isolation-level-for-create="READ_COMMITTED"
                          table-prefix="${datasource.table.prefix}"
                          lob-handler="defaultlobHandler"/>
    <bean id="defaultlobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>

Si vous avez une idée, je suis preneur !

Merci pour vos pistes et retours.

Bonne journée.

Cdt,

PS : utilisation de SpringBatch V4.3 et JDK 6.