0

我们使用 JNDIRealm (Tomcat 6) 进行 LDAP 身份验证。可能是由于 LDAP 不稳定,一个线程锁定了 JNDIRealm.authenticate 方法并导致线程转储。为了解决这个问题,添加了扩展 JNDIRealm 的 CustomJNDIRealm 类,如下所示

 package com.gop.it.msoft;

 import org.apache.catalina.realm.JNDIRealm;

 public class CustomJNDIRealm extends JNDIRealm {
 protected String readTimeout;
    @Override
    protected Hashtable<String,String> getDirectoryContextEnvironment() {
      Hashtable<String,String> env = new Hashtable<String,String>();
        if(readTimeout != null) env.put("com.sun.jndi.ldap.read.timeout", readTimeout);
    return env;
    }
 }

现在,如何在 Server.xml 中进行配置?通过以下操作,我得到 ClassNotFoundException。请帮忙。

<Realm allRolesMode="authOnly" className="com.gop.it.msoft.CustomJNDIRealm" connectionURL="ldaps://ldap.gop.com:636" referrals="follow" userPattern="uid={0},ou=People,o=gop.com" readTimeout="5000" userSubtree="false"/>

谢谢一堆

4

1 回答 1

0

在加载 webapp 之前,Realm 实现必须可用。因此,它必须在 Tomcat 的 lib 目录中的 JAR 文件中。将其放入 webapp 自己的 WEB-INF/lib 中是行不通的。

于 2014-04-23T01:48:40.603 回答