Skip to content

Commit e3e34e2

Browse files
committed
Ignore deserialization exceptions for JDBC sessions
1 parent ec42639 commit e3e34e2

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

src/main/java/nl/b3p/planmonitorwonen/api/configuration/JdbcSessionConfiguration.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,20 @@
66

77
package nl.b3p.planmonitorwonen.api.configuration;
88

9+
import java.io.InputStream;
10+
import java.io.ObjectInputStream;
911
import javax.sql.DataSource;
1012
import org.springframework.beans.factory.annotation.Qualifier;
1113
import org.springframework.beans.factory.annotation.Value;
1214
import org.springframework.boot.jdbc.DataSourceBuilder;
1315
import org.springframework.context.annotation.Bean;
1416
import org.springframework.context.annotation.Configuration;
1517
import org.springframework.context.annotation.Profile;
18+
import org.springframework.core.convert.ConversionService;
19+
import org.springframework.core.convert.support.GenericConversionService;
20+
import org.springframework.core.serializer.Deserializer;
21+
import org.springframework.core.serializer.support.DeserializingConverter;
22+
import org.springframework.core.serializer.support.SerializingConverter;
1623
import org.springframework.jdbc.core.simple.JdbcClient;
1724
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
1825
import org.springframework.session.jdbc.config.annotation.SpringSessionDataSource;
@@ -75,4 +82,23 @@ public PlatformTransactionManager springSessionTransactionOperations(
7582
@Qualifier("springSessionDataSource") DataSource springSessionDatasource) {
7683
return new DataSourceTransactionManager(springSessionDatasource);
7784
}
85+
86+
@Bean("springSessionConversionService")
87+
public ConversionService springSessionConversionService() {
88+
GenericConversionService converter = new GenericConversionService();
89+
converter.addConverter(Object.class, byte[].class, new SerializingConverter());
90+
converter.addConverter(byte[].class, Object.class, new DeserializingConverter(new CustomDeserializer()));
91+
return converter;
92+
}
93+
94+
static class CustomDeserializer implements Deserializer<Object> {
95+
@Override
96+
public Object deserialize(InputStream inputStream) {
97+
try (ObjectInputStream ois = new ObjectInputStream(inputStream)) {
98+
return ois.readObject();
99+
} catch (Exception ignored) {
100+
return null;
101+
}
102+
}
103+
}
78104
}

0 commit comments

Comments
 (0)