【问题标题】:Expired sessions in GenericObjectPoolGenericObjectPool 中的过期会话
【发布时间】:2014-01-23 07:14:52
【问题描述】:

我正在使用 org.apache.commons.pool.impl.GenericObjectPool 的子对象来提供到 Web 服务的连接(org.apache.axis2.client.Stub 的子对象)。

如何设置池,使会话过期的连接会自动从池中删除?方法borrowConnection() 必须始终返回有效会话。

我是否必须在池对象中使用一些参数,如果过期将删除连接或设置自动删除连接的超时时间,或者是否有任何方法可以检查会话是否在服务器端过期?据我所知,我的网络服务没有提供廉价的方法来检查会话的有效性......

我的代码:

SDConnection sd
    = (SDConnection)connector.getConnectionManager().borrowConnection();

sd.someServiceMethod();

调用someServiceMethod() 是可以的,但在一段时间不活动后我得到:

AxisFault:SID 超时

【问题讨论】:

    标签: java session pooling


    【解决方案1】:

    您是否研究过validateObject 方法?您可以将条件放在这里并返回false 以将池内的对象标记为无效。

    【讨论】:

    • 现在我重写了 BasePoolableObjectFactory 类的 validateObject 方法。为了测试会话有效性,我使用 Web 服务操作,即由其开发人员标记为“便宜”,可用于测试或保持会话活动。您必须设置 genericObjectPoolConnectionManager.setTestOnBorrow(true);.
    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2016-08-04
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多