ayyagarikiran wrote:
the DN of schema should be ou=schema i.e
ldap://localhost:10389/ou=schema
HTH
Kiran Ayyagari
Thanks Kiran. There are other error in the code. Here is a working version :
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.ldap.LdapContext;
public class ActivateSchem {
public static void main(String[] args) {
ActivateSchem obj = new ActivateSchem();
Hashtable env = obj.connectionEnvApache();
obj.activate(env);
}
/** Connect to Apache DS.
* @return
*/
private Hashtable connectionEnvApache(){
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:12389/");
env.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");
env.put(Context.SECURITY_CREDENTIALS, "secret");
return env;
}
private void activate(Hashtable env){
try {
DirContext ctx = new InitialDirContext(env);
//DirContext schemaRoot = ctx.getSchema("");
Attributes nisAttrs = ctx.getAttributes(
"cn=nis,ou=schema" );
boolean isNisDisabled = false;
if ( nisAttrs.get( "m-disabled" ) != null )
{
isNisDisabled = ( ( String ) nisAttrs.get(
"m-disabled").get() ).equalsIgnoreCase( "TRUE" );
}
// if nis is disabled then enable it
if ( isNisDisabled )
{
Attribute disabled = new BasicAttribute(
"m-disabled", "FALSE" );
ModificationItem[] mods = new ModificationItem[] {
new ModificationItem(
DirContext.REPLACE_ATTRIBUTE,disabled ) };
ctx.modifyAttributes( "cn=nis,ou=schema", mods );
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org