|
Hi there,
I'm building and JAVA application, using JNDI to
store and retrive objects in LDAP.
I'm using Active Directory as the LDAP server and
have modified the schema to match my needs.
Has a test, I have created a new objectClass using
MMC console and the Active Directory Schema snap-in.
I called the new objectClass 'ee-teste' and set has
it's mandatory attributes the attribute 'cn' and has it's optional atributes the
'mail' attribute.
I have an organizationalUnit with the
DN=OU=EExtender,DC=eextender,DC=pt and I'm trying to create a new entry of type
'ee-teste', but keep getting a SchemaViolationException.
If I try to create a standard Active Directory
object, like 'locality', my code works fine. But with my object it
crashes.
Can anyone help me. I'm stuck here and can't see
the solution.
Thx.
Here's the code I'm using:
String jndiURL = "ldap://192.168.65.199:389/";
String initialContextFactory = "com.sun.jndi.ldap.LdapCtxFactory"; String authenticationMode = "simple"; String contextReferral = "ignore"; // String securityProtocol = "ssl"; // String principal = "cn=Directory Manager, ou=EExtender, dc=eextender, dc=pt"; String principal = "[EMAIL PROTECTED]"; String credentials = "password"; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory); env.put(Context.PROVIDER_URL, jndiURL); env.put(Context.SECURITY_AUTHENTICATION, authenticationMode); env.put(Context.SECURITY_PRINCIPAL, principal); env.put(Context.SECURITY_CREDENTIALS, credentials); env.put(Context.REFERRAL, contextReferral); // env.put(Context.SECURITY_PROTOCOL, securityProtocol); // env.put("java.naming.ldap.factory.socket","javax.net.ssl.SSLSocketFactory"); env.put("java.naming.ldap.version","3"); DirContext ctx = null; try { ctx = new InitialDirContext(env); BasicAttributes attrs = new
BasicAttributes();
BasicAttribute ocs = new
BasicAttribute("objectclass");
ocs.add("ee-teste"); attrs.put(ocs); BasicAttribute cn = new
BasicAttribute("cn",
"abrek");
attrs.put(cn); BasicAttribute mail = new BasicAttribute( "mail", "[EMAIL PROTECTED]" ); attrs.put(mail); ctx.createSubcontext("cn=abrek,OU=EExtender,DC=eextender,DC=pt",
attrs);
ctx.close();
} catch (NameAlreadyBoundException nex) { System.out.println("User ID is already in use, please select a different user ID ..."); } catch (Exception ex) { System.out.println("Failed to create user account... Please verify the user information..."); ex.printStackTrace(); } And the returned Exception:
javax.naming.directory.SchemaViolationException:
[LDAP: error code 65 - 00002099: UpdErr: DSID-03050BA2, problem 6002
(OBJ_CLASS_VIOLATION), data 0
Rafael M. Torres ([EMAIL PROTECTED])
--------------------------------------------- Infopulse Portugal Pr. dos Poveiros, 56, 2� 4000-393 Porto, Portugal Tel: +351 223 389 103 Fax: +351 223 389 104 ICQ: 86290812 |
- RE: [ActiveDir] Problem: Using JNDI to add new entries Rafael Torres
- RE: [ActiveDir] Problem: Using JNDI to add new ent... Gil Kirkpatrick
- RE: [ActiveDir] Problem: Using JNDI to add new ent... Fugleberg, David A
- Re: [ActiveDir] Problem: Using JNDI to add new... Rafael Torres
