Trocar senha no AD via Java

Bom dia,

Pessoal vejam se podem me ajudar,
Estou querendo fazer um pequeno programa em java onde o usuario pode alterar no AD Server 2008 diretamente, seu endereço, telefone e outros dados mais simples, e tambem sua senha.
Mas não consigo fazer que o usuario altere sua senha.Outros dados ele altera.

Já olhei vários forum e topicos, mas sem suscesso, como estes:



http://alextch.members.winisp.net/ResetADPasswordFromJava/SetADPasswordFromJava.htm

Neste trecho quero usar a credencial do próprio ususario:

env.put(Context.SECURITY_AUTHENTICATION, "simple");  
env.put(Context.SECURITY_PRINCIPAL,"CN=kamplenk,OU=Estagiarios,OU=Usuarios,DC=Server,DC=br");  //aqui quero usar autenticação do proprio usuario
env.put(Context.SECURITY_CREDENTIALS, "Pepe12");  //senha do usuario que quer mudar senha
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");  
env.put(Context.PROVIDER_URL, "ldap://server.br:389"); // 636 é a porta do ldaps  
env.put(Context.SECURITY_PROTOCOL, "ssl"); 
//conecta....
//mudar senha
String oldQuotedPassword = "\"" + senhaAntiga + "\"";
byte[] oldUnicodePassword = oldQuotedPassword.getBytes("UTF-16LE");  
String newQuotedPassword = "\"" + senhaNova + "\"";  
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");  
         
ModificationItem[] mods = new ModificationItem[2];  
mods[1] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE,new BasicAttribute("unicodePwd", oldUnicodePassword));  
mods[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE,new BasicAttribute("unicodePwd", newUnicodePassword));  
         // Troca a senha  
DirContext ctx = new InitialDirContext(env); 
ctx.modifyAttributes("CN=kamplenk,OU=Estagiarios,OU=Usuarios,DC=Server,DC=br", mods);
ctx.modifyAttributes(entryDN, mods);  

Alguém já passou por isso?
Podem indicar um passo a passo para troca de senha do usuário?
Podem me passar algum código para ver se consigo isso?

Obrigado.