以前解决过这样一个问题:
由于连接数过多,而oracle设置的连接数过少,导致一个连接刚启用,
被使用中,被其他新申请的连接“挤掉了”。
1、在程序运行中,观察一下oracle的session有多少!?你的oracle最大允许多少session!
2、你的连接池算法如何?如果是新写的算法,先不用这个算法,看看不用连接池的时候是否
   会发生这样的现象。
3、你的数据库连接方式是什么?thin?jdbc-odbc?有没有设置数据源的相关属性?
4、你的java应用的连接是以cookie方式连接的?会不会在一定范围内失效?
总之,对oracle、web应用分别分析,逐渐缩小范围!!
你的源码没有,只有凭空分析。