我们当前正在将应用程序迁移到Liberty服务器(8.5.5.9)上运行。我们发现应用程序服务器和数据库之间的连接偶尔会被防火墙终止,因为它们会在很长一段时间内处于空闲状态。发生这种情况时,在下一个HTTP请求中,应用程序将收到其中一个断开的连接。在WAS Liberty连接池中,我可以验证借用连接吗?
此前,我们一直在使用Apache Commons DBCP来管理连接池。其中一个configuration parameters in a DBCP conneciton pool是“testOnBorrow”,它可以防止应用程序被交给这些不良连接之一。
Liberty托管数据源中是否有这样的配置参数?
到目前为止,我们可以这样来配置我们的数据源:
user="example" password="{xor}AbCdEfGh123="
URL="jdbc:oracle:thin:@example.com:1521:mydb"
/>
minPoolSize="3" maxPoolSize="10" maxIdleTime="10m"
purgePolicy="ValidateAllConnections"
/>
当前设置为验证所有的连接,如果一个坏一个被发现的purgePolicy(如,一夜当所有连接已闲置了很长时间)。但是,所有这一切都是为了防止将多个不良连接顺序地交给应用程序。
connectionManager中的一个选项是将agingTimout =“20m”设置为自动删除足够长的已经被防火墙终止的连接。但是,这也会终止最近使用的连接(防止防火墙破坏它们)。
我在这里错过了一些明显的东西吗? 谢谢!
+1
我建议使用agingTimeout,因为许多防火墙并不关心连接是否被使用,而只是终止长时间打开的连接。 –