免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4183 | 回复: 2
打印 上一主题 下一主题

[ldap] openldap建立连接时很慢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-08 12:01 |只看该作者 |倒序浏览
使用openldap进行认证,在创建连接的时候非常慢,大概要4.5秒左右  
    时间都花在这里: DirContext ctx = new InitialDirContext(mEnv);
      不知是我代码的问题,还是还需要在opanldap上进行一些配置,望高手指教。
      获取连接的代码如下:

/**
   * 获取 LDAP 服务器连接的方法
   * @param env 连接LDAP的连接信息

   * @return DirContext - LDAP server的连接

   */
  public static DirContext getDirContext(Env env) {
    try {
// 初始化Properties对象
      Properties mEnv = new Properties();
// 使用LDAP/AD的认证方式

      mEnv.put(Context.AUTHORITATIVE, "true");
// 设定LDAP/AD的连接工厂

      mEnv.put(Context.INITIAL_CONTEXT_FACTORY, env.factory);
// 设定LDAP/AD的url地址
      mEnv.put(Context.PROVIDER_URL, env.url);
// 设定连接TimeOut
      if (!StringUtils.isEmpty(env.timeOut)) {
        mEnv.put("com.sun.jndi.ldap.connect.timeout", env.timeOut);
      }
// 设定安全模式为simple方式
      mEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
// ssl通道访问
      if (env != null && "ssl".equals(env.securityProtocol)) {
// 设定访问协议为ssl
        mEnv.put(Context.SECURITY_PROTOCOL, env.securityProtocol);
// 设置访问证书属性,若没有此证书将无法通过ssl访问AD
        System.setProperty("javax.net.ssl.trustStore",
                           env.sslTrustStore);
      }
// 读取可以登陆ldap的帐号、密码

      mEnv.put(Context.SECURITY_PRINCIPAL, env.adminUID);
      mEnv.put(Context.SECURITY_CREDENTIALS, env.adminPWD);

      log.debug(Constants_INIT + "DirContext");
// 通过参数连接LDAP/AD
      
      Date beginTime = new Date();
      System.out.println("开始1111:" + beginTime.getTime());      
      
      DirContext ctx = new InitialDirContext(mEnv);
      
      Date endTime = new Date();
      System.out.println("结束2222:" + endTime.getTime());            
      long t = endTime.getTime() - beginTime.getTime();
           System.out.println("用时:" + t);        
      
      log.debug("LdapConnectionFactory:" + Constants_INIT + "DirContext" +
                Constants_SUCCESS);
      return ctx;

    }
    catch (NamingException ex) {
      ex.printStackTrace();
      log.error("LdapConnectionFactory:" + Constants_INIT + "DirContext" +
                Constants_FAIL);
      log.error(ex.getMessage());
      return null;
    }
  }

论坛徽章:
0
2 [报告]
发表于 2008-05-08 14:02 |只看该作者

回复 #1 chuanweilee 的帖子

补充一下:
   我在win2003上的AD上也试了,建立连接的时候花费的时间也是4.5秒左右
   我的openldap装在linux虚拟机上,win2003也是使用的虚拟机

论坛徽章:
0
3 [报告]
发表于 2008-07-26 11:52 |只看该作者
自己解决,结果是WebSphere6.1自带的JDK的版本问题,换成IBM单独发布的5.0的JDK就没这个问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP