代码之家  ›  专栏  ›  技术社区  ›  suresh

spring ldap间歇性地需要2.10分钟

  •  0
  • suresh  · 技术社区  · 7 年前

    我使用的是spring-security-ldap-3.2.9和spring-ldap-core-1.3.2。

    我们偶尔会遇到LDAP挂断,需要2分钟以上的时间。没有spring框架的实现没有问题。

    这是一个已知的问题还是我缺少的一些配置。

    2 回复  |  直到 7 年前
        1
  •  1
  •   ParkerM Juliet    7 年前

    听起来像是连接池的问题。假设您的服务有一个使用持久连接的专用主体(例如,用于用户查找),那么它可能正在尝试对过时的连接执行查询。如果池尚未配置为定期验证这些连接,则它可能仅依赖于超时来确定需要重新建立连接。

    spring ldap支持apache commons池,该池具有内置的连接验证和维护配置选项(请参见 section 9.1 在参考文件中)。启用 testOnBorrow testWhileIdle 池ContextSource上的选项往往可以很好地用最少的配置逐出过时的连接。如果您正在使用池,那么如果可能的话,请考虑更新到spring ldap 2.1+,这将引入 support for Apache Commons Pool 2 是的。

    ldap服务器还将有自己的超时设置,在该设置中,在一定的空闲时间后,它将断开连接。由您的服务创建的任何连接的空闲超时都应该小于LDAP服务器端的空闲超时。这将在达到ldap服务器超时之前抢先删除空闲连接,从而在下一次相关主体需要与ldap服务器通信时强制建立新连接。

        2
  •  1
  •   suresh    7 年前

    我真的找不到背后的原因,因为这是发生在框架内,我无法编辑任何代码。

    最后,我将我的实现切换回没有spring的java的普通ldap实现,到目前为止它工作得很好。

    推荐文章