LDAP 错误代码如何 Map 到 JNDI 异常
LDAP 定义了一组状态代码,这些状态代码随 LDAP 服务器发送的 LDAP 响应一起返回(请参见RFC 2251)。在 JNDI 中,错误条件表示为NamingException的子类的已检查异常。请参见Naming Exceptions部分以获取 JNDI 异常类的概述。
LDAP 服务提供者将从 LDAP 服务器接收的 LDAP 状态代码转换为NamingException
的适当子类。下表显示了 LDAP 状态代码与 JNDI 异常之间的 Map。
LDAP 状态码 | Meaning | exception 或行动 |
---|---|---|
0 | Success | Report success. |
1 | Operations error | NamingException |
2 | Protocol error | CommunicationException |
3 | 超过时间限制。 | TimeLimitExceededException |
4 | 超出大小限制。 | SizeLimitExceededException |
5 | Compared false. | 由DirContext.search()使用。不生成异常。 |
6 | Compared true. | 由DirContext.search()使用。不生成异常。 |
7 | 不支持身份验证方法。 | AuthenticationNotSupportedException |
8 | 需要强身份验证。 | AuthenticationNotSupportedException |
9 | 返回部分结果。 | 如果环境属性"java\.naming\.referral" 设置为"ignore" 或错误内容不包含引用,则抛出PartialResultException。否则,请使用内容来构建引荐。 |
10 | Referral encountered. | 如果环境属性"java\.naming\.referral" 设置为"ignore" ,则忽略。如果属性设置为"throw" ,则抛出ReferralException。如果该属性设置为"follow" ,那么 LDAP 提供程序将处理引用。如果已超过"java\.naming\.ldap\.referral\.limit" 属性,则抛出LimitExceededException。 |
11 | 超出 管理 限制。 | LimitExceededException |
12 | 请求了不可用的关键 extensions。 | OperationNotSupportedException |
13 | Confidentiality required. | AuthenticationNotSupportedException |
14 | SASL 绑定正在进行中。 | 在身份验证期间由 LDAP 提供程序内部使用。 |
16 | 不存在这样的属性。 | NoSuchAttributeException |
17 | 未定义的属性类型。 | InvalidAttributeIdentifierException |
18 | Inappropriate matching | InvalidSearchFilterException |
19 | 违反约束。 | InvalidAttributeValueException |
20 | 已经使用的属性或值。 | AttributeInUseException |
21 | 属性语法无效。 | InvalidAttributeValueException |
32 | 不存在这样的对象。 | NameNotFoundException |
33 | Alias problem | NamingException |
34 | 无效的 DN 语法。 | InvalidNameException |
35 | 是一片叶子。 | 由 LDAP 提供程序使用;通常不会产生异常。 |
36 | 别名解除引用问题 | NamingException |
48 | Inappropriate authentication | AuthenticationNotSupportedException |
49 | Invalid credentials | AuthenticationException |
50 | 访问权限不足 | NoPermissionException |
51 | Busy | ServiceUnavailableException |
52 | Unavailable | ServiceUnavailableException |
53 | 不愿执行 | OperationNotSupportedException |
54 | Loop detected. | NamingException |
64 | Naming violation | InvalidNameException |
65 | 对象类违反 | SchemaViolationException |
66 | 禁止在非叶子上使用。 | ContextNotEmptyException |
67 | 在 RDN 上不允许。 | SchemaViolationException |
68 | 条目已存在。 | NameAlreadyBoundException |
69 | 禁止修改对象类。 | SchemaViolationException |
71 | 影响多个 DSA。 | NamingException |
80 | Other | NamingException |