如何处理 LDAP 连接?

发布于 2024-12-17 13:14:42 字数 530 浏览 0 评论 0原文

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

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

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

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

这里有一些想法:

  1. 在构造函数中初始化连接(并将其分配给一个字段)并提供一个 dispose()` 方法,该方法关闭连接
  2. 不要在构造函数中初始化连接字段,但在 execute() 方法中初始化并关闭它
  3. 在execute方法中创建连接并将其传递给所有调用的方法
  4. 甚至更丑陋(在导入器并将其传递给所有处理器,然后执行后关闭 它)

I'm trying to implement the following:

I have an Importer class which registers so called Processors, and then executes them by iterating over them and calling execute (Processor is an interface and contains a method void execute()).

What those processors do is connect to an LDAP, and do certain tasks, e.g. retrieves a list of persons and stores them into a database, or reads certain privileges and maps them to groups.

This all works out quite well... except I just don't know how to handle the LDAP connection.

Here are some ideas:

  1. initialize the connection in the constructor (and assign it to a field) and provide a dispose()` method, which closes the connection or
  2. do not initialize the connection field in the constructor, but initialize and close it in the execute() method or
  3. create the connection in the execute method and pass it to all methods which are called
  4. even uglier (create the connection in the Importer and pass it to all processors, then, after execution, close it)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ˉ厌 2024-12-24 13:14:42

使用作为必需参数的策略方法处理与 LDAP 服务器的连接。这会解耦并隔离代码。您应该更喜欢 UnboundID LDAP SDK 来完成这项工作 - 并且该 SDK 支持以下功能:创建一个 内存目录服务器,因此无需使用“模拟”或“假”连接。另外,您还可以查看博客文章 “LDAP:编程实践”

Handle the connection to the LDAP server with a Strategy method that is a required parameter. This de-couples and isolates the code. You should prefer the UnboundID LDAP SDK for this work - and the SDK supports the ability to create an in-memory directory server so there is no need to use "mock" or "fake" connections. Also, you can examine the blog post "LDAP: Programming Practices".

对岸观火 2024-12-24 13:14:42

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

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

它有两个好处。

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

Build it somewhere else and inject it into the application.

If you don't have JEE6 which provides dependency injection via CDDI then you can use Spring framework as a workaround.

It has two benefits.

  1. the lifecycle of the connection is outside the class that uses it
  2. the connection can be replaced with a mock or fake connection for testing.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文