【发布时间】:2018-11-16 00:46:15
【问题描述】:
我想从我的 LDAP 服务器中选择(搜索)任何类型的数据。 我有一个连接,但我不知道如何检索任何数据。 任何人都可以提供提示,以便我可以查看数据等任何内容吗?
问题:
当我运行以下代码时,我得到了:
线程“main”java.lang.ClassCastException 中的异常:com.sun.jndi.ldap.LdapCtx 无法转换为 javax.activation.DataSource`
我尝试了什么?
DataSource 有两个导入:
- 1) javax.sql
- 2) javax.activation
我更改了不同的导入但没有工作。
我的另一个问题是“这两个进口是一样的吗?”
源代码:
public class LDAPJndi {
//JNDI API를 사용하여 서버와 연결 (Connecting to LDAP server using JNDI)
public static DirContext connectJndi() throws NamingException {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.0.60:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=govmanager");
env.put(Context.SECURITY_CREDENTIALS, "GOVmoi!manager");
DirContext ctx = new InitialDirContext(env);
return ctx;
}
public static void lookupJndi() throws NamingException {
// a method for looking up any data
DirContext ctx = connectJndi();
Object o = ctx.lookup("c=kr");
System.out.println(o);
//above didn't work, so tried the bottom
DataSource dataSource = (DataSource) ctx.lookup("c=kr"); //c=kr is BaseDN
System.out.println(dataSource);
}
}
【问题讨论】:
-
我通过使用“SearchControls”“searchFilter”“setSearchScope”“SearchResult”解决了这个问题。谢谢~
-
您好,如果您认为自己得到了答案,请将其写成带有一些解释的答案并接受它,这样您的帖子就会获得一些可见性,并且遇到相同问题的人可以从中受益。
-
@EricLavault I c。好的。我会的~
-
你在使用任何框架吗?像 f.e.
spring? -
@user3529850 我正在使用 JNDI API(用于 LDAP 连接)虽然没有 Spring