JDBC pooling Oracle driver Socket read timed out
Since the client is at the same server as the database you could try the IPC protocol instead of TCP as a workaround.
It is not only independent of the TCP traffic conditions but also MUCH quicker than TCP.

Your connection string would be something like

jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY = LISTENER)))(CONNECT_DATA=(SERVICE_NAME=orcl)))


As you are using connection pooling, your only verification should be dead connection (SQLNET.EXPIRE_TIME).
Oracle has several notes explaining it's functionality but it basically says it's deppendent of the TCP network layout:


Dead Connection Detection (DCD) Explained - Doc ID 151972.1.
Common Questions About Dead Connection Detection (DCD) - Doc ID 1018160.6


It could be a profile configuration problem (the user connected is not allowed to stay inactive for more than x seconds, the IDLE_TIME limit). 
You could verify your profiles with:

set linesize 1000
set pagesize 1000
select *
from dba_profiles
order by profile;


Also get your network checked.