У меня есть этот простой клиент ldap, который использует устаревшую коллекцию Hashtable
.Замените устаревшую коллекцию `Hashtable`
class SAuth {
public static void main(String[] args) {
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://xx.xx.xx.xx:yyyy/");
// Authenticate as S. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=orcladmin");
env.put(Context.SECURITY_CREDENTIALS, "password");
try {
DirContext ctx = new InitialDirContext(env);
System.out.println(" i guess the connection is sucessfull :)");
// Do something useful with ctx
// Close the context when we're done
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Есть ли какая-нибудь современная коллекция, которую я могу использовать, не нарушая код вместо Hashtable?
Update:
class tSAuth {
public static void main(String[] args) {
Map<String, String> env = new HashMap<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://xx.xx.xx.xx:yyyy/");
// Authenticate as S. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=orcladmin");
env.put(Context.SECURITY_CREDENTIALS, "password");
try {
DirContext ctx = new InitialDirContext((Hashtable<?, ?>) env);
System.out.println(" i guess the connection is sucessfull :)");
// Do something useful with ctx
// Close the context when we're done
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Единственный раз, когда вы должны использовать устаревшие классы, - это когда у вас есть API, который его требует. В этом случае вы должны передать Hashtable. –
Вместо этого вы можете использовать объект Properties. Класс Properties не считается устаревшим. Свойства расширяют HashTable, поэтому его можно передать в конструктор InitialDirContext. (Конечно, это не означает, что вы действительно избегаете использования HashTable, но, по крайней мере, ваш код не будет напрямую использовать устаревший класс.) – VGR