Вы используете старый jdk1.5 (jdk1.5.0_12).
У меня та же проблема с jdk1.5_16 при использовании tomcat 5.5. У нас есть поток, который ожидает ответа ldap, и он блокирует все остальные потоки, потому что я не знаю о JBoss, но в tomcat по крайней мере все аутентификации ldap выполняются последовательно.
Если вы посмотрите в декомпилированном коде, который вы вставили, через 15 секунд ожидания у вас будет останов label0, который фактически является циклом. Так что он будет зацикливаться до тех пор, пока ldap не ответит (без тайм-аута!).
Я не уверен, в какой версии это было исправлено, но в 1.5.0_22 код теперь:
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");
}
}
Итак, теперь, если вы укажете значение тайм-аута, оно будет ждать этого времени, а затем выйдет из цикла. Это должно разблокировать очередь аутентификации.