如何处理LDAP连接?

时间:2011-11-23 13:47:12

标签: java ldap

我正在尝试实施以下内容:

我有一个Importer类,它注册所谓的Processor,然后通过迭代它们来执行它们并调用execute(Processor是一个接口并包含一个方法void execute())。

这些处理器所做的是连接到LDAP,并执行某些任务,例如检索人员列表并将其存储到数据库中,或者读取某些特权并将它们映射到组。

这一切都很顺利......除了我不知道如何处理LDAP连接。

以下是一些想法:

  1. 在构造函数中初始化连接(并将其分配给字段)并提供dispose()方法,该方法关闭连接
  2. 不要在构造函数中初始化连接字段,而是在execute()方法
  3. 中初始化并关闭它
  4. 在execute方法中创建连接并将其传递给所有名为
  5. 的方法
  6. 甚至更丑(在Importer中创建连接并将其传递给所有处理器,然后在执行后关闭它)

2 个答案:

答案 0 :(得分:2)

使用作为必需参数的策略方法处理与LDAP服务器的连接。这解耦并隔离了代码。您应该更喜欢UnboundID LDAP SDK来完成这项工作 - 并且SDK支持创建in-memory directory server的功能,因此无需使用“模拟”或“虚假”连接。此外,您还可以查看博文"LDAP: Programming Practices"

答案 1 :(得分:1)

在其他地方构建它并将其注入应用程序。

如果您没有通过CDDI提供依赖注入的JEE6,那么您可以使用Spring框架作为解决方法。

它有两个好处。

  1. 连接的生命周期在使用它的类之外
  2. 可以使用模拟或伪连接替换连接以进行测试。