Contexto

En módulos Java/JEE aparecieron problemas como:

text
NoClassDefFoundError

y errores LDAP:

text
PartialResultException
LDAP error code 10
Referral

NoClassDefFoundError

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ó.
Esto obliga a diferenciar:
text
compile-time classpath
runtime classpath
application server classloading
packaging

Decisió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.
La decisión correcta requiere entender la arquitectura del EAR y las dependencias entre módulos.

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.
De nuevo aparece el mismo patrón: el comportamiento de runtime no se deduce únicamente viendo el proyecto en Eclipse.

---