Projeto Web nao conecta com LDAP após 1 dia, alguma ideia?

Desenvolvi uma aplicação web e ela esta funcionando normal,
realiza uma conexao LDAP para autenticação do usuario e isso funciona
sem nenhum problema, mas quando passa de um dia para o outro, lembrando
que o servidor não eh desligado, ele nao consegue realizar a conexão com o LDAP,
verifiquei que o LDAP valida a data para ter acesso, se trocar a data do sistema ele
não conecta, seria isso alguma coisa.

mas quando realizo um reload na aplicação ela conecta.

Alguem??

Obrigado

Qual é o erro que acontece??

entao, no log nao acusa erro, vi no log do
apache tomcat e nele fla q tentou conectar e nao obteve sucesso,

eu coloquei um reconnect=true, e msmo assim nao funcionol

acho que é por causa da data msm, ele realiza a conexao, mas

aqui na minha empresa se a data do computador esta diferente do AD (Active Directory)

ele nao conecta. logo pensei q poderia ser isso q o servidor tbm estivesse passando.

Exemplo, se a aplicação ficar ativa de ontem e eu for tentar conectar hj, ele busca a data da aplicação
que foi ontem, logo nao conecta no ad

seria isso??

Que coisa maluca!

Só alguns pontos para dar uma idéia melhor do que está acontecendo:

  • Essa conexão com LDAP é da própria aplicação (vocês programaram) ou está usando o JAAS do próprio Tomcat?
  • Qual é a mensagem de erro do log do tomcat?
  • Precisa ver bem se o problema acontece pela virada do dia propriamente dita ou se é pelo tempo que a aplicação está no ar. Para ter certeza só fazendo testes à noite para saber que hora exatamente para de funcionar, mas se na empresa não ficar ninguém à noite nem tiver acesso remoto, tente reiniciar no fim do dia (o mais tarde possível, o último a ir embora faz isso) e ver como está no outro dia bem cedo.

O horário acredito que não tenha nada a ver, porque mesmo se houver essa restrição das datas iguais o tempo continuará passando igual no tomcat e no LDAP.
(Mas eu que não sou doido de mandar descartar totalmente a possibilidade hehe)

eu mesmo programa a conexão, me flaram para realizar a conexão via Spring security
vou dar uma pesquisada no JAAS
quem sabe me ajuda a resolver, se for o tempo
o que vc me aconselharia a fazer?

essa é minha classe que realiza a conexao com o AD via LDAP

package util;

//classe responsável pela conexão com o Servidor AD
import java.io.Serializable;
import java.util.Hashtable;    
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.naming.AuthenticationException;    
import javax.naming.Context;    
import javax.naming.NamingException;    
import javax.naming.directory.DirContext;    
import javax.naming.directory.InitialDirContext;    
    
@ManagedBean(name="ldap")
@SessionScoped

public class LDAP implements Serializable {    
    
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@SuppressWarnings({ "unchecked", "unused", "rawtypes" })
	public boolean verificaAd(String nome, String password){    
    
        String userName = nome+"@arrb.com.br";  
        String newPassword = password;    
    
        
       
		Hashtable authEnv = new Hashtable(11);    
    
        authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");    
        authEnv.put(Context.PROVIDER_URL, "ldap://192.168.1.15:389");    
        authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");    
        authEnv.put(Context.SECURITY_PRINCIPAL, userName);    
        authEnv.put(Context.SECURITY_CREDENTIALS, newPassword);
     
       try    
        {    
           DirContext authContext = new InitialDirContext(authEnv);    
           System.out.println("Autenticado!");    
           return true;
    
        }    
        catch (AuthenticationException authEx)    
        {    
        System.out.println("Erro na autenticação! ");    
        //authEx.printStackTrace();
        	return false;
        }    
        catch (NamingException namEx)    
        {    
        System.out.println("Problemas na conexão! ");    
        //namEx.getCause().printStackTrace();
        	return false;
        }    
    }    
    
}  

Duas coisinhas que eu mudaria nesse código:

  1. Quando tiver sucesso, antes de retornar feche a conexão usando authContext.close(); . Esse é um ponto altamente suspeito, vc pode estar com muitas conexões presas até que o servidor não aceita mais.

  2. Deixe o printStackTrace() nas exceções, as informações sobre o erro vão ficar MUITO mais evidentes.

authEx.printStackTrace(); namEx.printStackTrace(); // -> Pode tirar o getCause(). que tinha aí, pois a causa raiz vai junto automaticamenteE coloca mais um bloco catch capturando Exception, e também imprimindo o stack trace… esse é só pra garantir que não vai passar nada.

Com essas alterações com certeza haverá novidades! Mesmo que seja apenas um log mais detalhes sobre o erro