2014/12/10

JDK 1.7.0_u72でLDAPとの通信がタイムアウトする(2)

JDK 1.7.0_u72でLDAPとの通信がタイムアウトする で書いた話の続き。

どうやらread timeout値 15秒を変更できないのは、アプリケーション側の仕様らしい。改善要望として受理された。

ただ、今まで行けていたものが、なぜダメになったのかについては、やはりJavaの仕様が変わったためらしい。
パケットキャプチャして見ていると15秒後にAbandonRequestを発してあきらめているのだが、まさしくこのAbandon Request メッセージがLDAP v3の仕様で Javaの(少なくとも)1.7.u72のではサポートされたからだとのこと。これまでは、UnboundRequest だけを投げて、とりあえず返答が返ってくるまで待っていたようだ。

Java8でも同様の仕様とのこと。

やはり、アプリ側でread timeoutの値を長くして待つか、LDAP側のデータ自体を速く答えが返るようにする(検索範囲を狭くする、グループをネストしないなど)、の二択。