Följande kan vara de möjligheter som kan orsaka undantaget:
-
Nätverksproblem:Det är nätverket mellan databasen och applikationsservern som gör att den fysiska anslutningen avbryts efter en viss tid. Det beror förmodligen på en brandvägg som körs bakom nätverket som är konfigurerad att döda db-anslutningar efter en viss tidsperiod. Du kan överväga en lösning för att hålla anslutningen vid liv hela tiden genom att helt enkelt konfigurera om din applikationsserver. För Tomcat kan du försöka lägga till
validationQuery="select 'validationQuery' from dua
l i Tomcat-datakällans conf-fil (context.xml) -
Anslutningarna till databasservern återställs och klienten meddelas inte av databasdrivrutinen. Problemet i det här fallet är att Oracle-drivrutinen upptäcker att dess socket till DBMS på något sätt (brandväggen igen, kanske?) har stängts i andra änden. Du kan överväga att ställa in din anslutningstimeout (i poolen) kortare än nätverks-/DB-serverns timeout som en lösning.