Bueno, despues de mucho probar, y no dar con el resultado, y de buscar en varias partes, aun no logro dar con una solucion satisfactoria. El problema trata de lo siguiente.
Tengo la seguiente autenticacion ldap y funciona perfectamente.
Código:
env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://"+controller.getDBParameter("CG_LDAP_OID_IP")+":"+controller.getDBParameter("CG_LDAP_OID_PORT")+"/"); env.put(Context.SECURITY_PRINCIPAL, basedn); env.put(Context.SECURITY_CREDENTIALS, password); try { InitialDirContext ctx = null; ctx = new InitialDirContext(env); log.info("Autenticacion Ldap exitosa"); autldap = true; ctx.close(); } catch (Exception e) { log.info("No se pudo completar la autenticacion ldap"); log.info("Mensaje: "+e.getMessage()); autldap = false; e.printStackTrace(); }
el problema es que una vez realizo esa autenticacion, e intento usar la siguiente funcion:
Persistence.createEntityManagerFactory("persis");
me arroja el siguiente error.
Código:
Caused by javax.naming.NamingException with message: "[LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece�]" Caused by javax.persistence.PersistenceException with message: "[PersistenceUnit: persis] Unable to build EntityManagerFactory"
bueno probando, si quito la autenticacion ldap inicial, al parecer el contexto queda limpio, y me funciona sin problema la segunda función.
a la final supongo que usando Persistence.createEntityManagerFactory tambien accedo al contexto, y por ello tira el error.
posterior a la autenticacion ldap tambien me deja de funcionar cosas como:
Código:
InitialContext initCtx = new InitialContext(); dataSource = (DataSource) initCtx.lookup(jndiNatDataSource);
me tira el siguiente error:
Código:
El problema básicamente está en que después de colocar la autenticacion ldap en mi desarrollo, estas funciones que ya estaban funcionando perfectamente, presentan problemas.Lo que considero es que de alguna forma el contexto queda directamente ligado a las restricciones de seguridad que coloque inicialmente, y siempre que intento acceder al contexto me envia a intentar autenticarme, lo que deseo hacer es que después de autenticarme con el ldap remueva estas restricciones.Caused by javax.naming.NamingException with message: "[LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece�]"
agradezco cualquier ayuda, sugerencia al respecto. De antemano muchas gracias.