Contexto
En módulos Java/JEE aparecieron problemas como:
text
NoClassDefFoundErrory errores LDAP:
text
PartialResultException
LDAP error code 10
ReferralNoClassDefFoundError
Un NoClassDefFoundError no significa simplemente que el IDE no encuentre una clase.
Puede ocurrir cuando:
- compiló correctamente;
- la clase existía durante compilación;
- no está disponible en runtime;
- falla una dependencia transitiva;
- el classloader de WebLogic no puede verla;
- está en otro módulo;
- el empaquetado EAR/WAR no la incluyó.
text
compile-time classpath
runtime classpath
application server classloading
packagingDecisión: localizar el módulo propietario
Durante la investigación fue importante determinar si determinadas clases o métodos debían incorporarse en SCM, PVA o módulos shared.
Esta pregunta no es trivial.
Duplicar una clase en el módulo equivocado puede "resolver" una compilación pero introducir:
- dependencias circulares;
- duplicidad;
- versiones distintas;
- problemas de classloader.
LDAP referrals
El error LDAP 10 indica referencias a otro contexto o servidor.
En Active Directory, una consulta puede recibir un referral hacia otro naming context.
El cliente debe decidir si:
- seguir referrals;
- cambiar base DN;
- usar Global Catalog;
- configurar JNDI;
- ajustar autenticación.
Lo que aprendí
Un error LDAP no siempre significa usuario/contraseña incorrectos.
Puede ser una cuestión de topología de directorio.
Propiedades distintas por entorno
También se investigó por qué una aplicación utilizaba un .properties en local y otro en desarrollo.
La respuesta requiere revisar:
- orden de classpath;
- recursos empaquetados;
- parámetros JVM;
- variables;
- archivos externos;
- configuración de WebLogic;
- overlays;
- classloader.
---
