The old jdk1.5 (jdk1.5.0_12) is used.
I have the same problem with jdk1.5_16 using tomcat 5.5. We have a thread waiting for an ldap response, and it blocks all other threads, because I do not know about JBoss, but in tomcat, at least all ldap authentications are performed sequentially.
If you look at the decompiled code that you inserted, after waiting 15 seconds, you have a break0 label, which is actually a loop. That way, it will loop until the ldap response (no timeout!).
I'm not sure which version it was fixed in, but in 1.5.0_22 the code is now:
BerDecoder readReply(LdapRequest paramLdapRequest) throws IOException, NamingException { BerDecoder localBerDecoder; int i = 0; while (((localBerDecoder = paramLdapRequest.getReplyBer()) == null) && (i == 0)) { try { synchronized (this) { if (this.sock == null) { throw new ServiceUnavailableException(this.host + ":" + this.port + "; socket closed"); } } synchronized (paramLdapRequest) { localBerDecoder = paramLdapRequest.getReplyBer(); if (localBerDecoder == null) if (this.readTimeout > 0) { paramLdapRequest.wait(this.readTimeout); i = 1; } else { paramLdapRequest.wait(15000L); } else break label163: } } catch (InterruptedException localInterruptedException) { throw new InterruptedNamingException("Interrupted during LDAP operation"); } }
So, if you specify a timeout value, it will wait for this time, and then exit the loop. This should unlock the authentication queue.
loopkin
source share