在Apache目录服务器中存储Java对象,第1部分 - 深入Apache目录服务器 - 编程入门网
接口。正如前面指出的(如 图 1 所示),J2EE 容器可以 通过 ApacheDS 的 JNDI 包装器利用它的目录服务。
可插入的协议支持 图 1 只显示了 ApacheDS 的一个使用模型。ApacheDS 的用途不仅仅是嵌在 J2EE 容器内作为目录服务。可以用 ApacheDS 实现任何需要后端目录服务的协议。甚至可以用它同时为各种类型的协议服务;例如,当前的 ApacheDS 实现就同时实现了 LDAP 和 Kerberos。而且,ApacheDS 中支持的协议的列表仍在增长。 ApacheDS 拥有灵活的可扩展的架构,因此可以实现新的协议。在图 2 中可以看到 ApacheDS 架 构的模型,它工作在 图 1 所示的 JNDI 包装器之上: 图 2. ApacheDS 灵活的可扩展的架构 可以看到,ApacheDS 使用一套叫做多用途网络应用程序接口(MINA)的接口。MINA 支持把新的协议实现插入 ApacheDS。在介 绍这些内容之前,我要解释一下 MINA 的工作方式。 在Apache目录服务器中存储Java对象,第1部分 - 深入Apache目录服务器(3)时间:2011-08-13 IBM Bilal SiddiquiMINA 如何工作 MINA 中的接口包含的 方法可以生成特定协议的工厂对象。这些工厂对象提供了把新协议实现插入 ApacheDS 的手段。协议实现 负责实现 MINA 接口,ApacheDS 框架依靠 MINA 包含的方法与协议实现对话。 例如,MINA 有一 个叫做 ProtocolProvider 的接口,该接口有一个 getCodecFactory() 方法。 ProtocolProvider.getCodecFactory() 方法返回一个对象,公开另一个叫做 ProtocolCodecFactory 的 MINA 接口。 ApacheDS 中的协议实现,实现了 ProtocolProvider 接口。例如,ApacheDS 中的 LDAP 实现拥有一个叫做 LDAPProtocolProvider 的类,这个类实现了 ProtocolProvider 接口。 LDAPProtocolProvider 中的 getCodecFactory() 方法返回一个公开 ProtocolCodecFactory 接 口的对象。这个 ProtocolCodecFactory 是一个工厂对象,ApacheDS 框架用它创建特定于 LDAP 的编码 和解码对象。 ProtocolCodecFactory 包含 newEncoder() 和 newDecoder() 方法,这两个方法返 回的对象公开 MINA 的 ProtocolEncoder 和 ProtocolDecoder 接口。特定于协议的编码对象公开 ProtocolEncoder 接口,而解码对象则公开 ProtocolDecoder 接口。 MINA 的编码和解码框架 猜也猜得出来,ApacheDS 框架使用特定于协议的 ProtocolDecoder 实例对协议请求进行解码, 这样就可以在处理请求之前理解请求的意义。在解码之后,ApacheDS 处理请求。例如,如果请求是一个 LDAP 搜索请求,那么 ApacheDS 就会在后端目录服务中搜索需要的数据,并提取搜索结果。 在找 到需要的搜索结果后,ApacheDS 框架用特定于协议的 ProtocolEncoder 对象编码搜索结果。在 LDAP 搜 索请求的示例中,ApacheDS 会使用特定于 LDAP 的 ProtocolEncoder 对象在向请求客户机发送响应之前 对搜索结构进行编码。 MINA 的服务框架 MINA 还有处理服务的类。任何服务提供者都可以 把自己注册到一个服务注册表,而协议提供者会与提供服务的提供者类一起注册。然后协议提供者就把协 议请求映射成 JNDI 操作。简单的示例就是映射到 JNDI 搜索请求的 LDAP 搜索请求。一旦 ApacheDS 框 架了解了在处理协议请求时需要包含哪个 JNDI 操作,它就能生成事件。 MINA 中的事件处理框架 把事件传递给适当的处理程序。例如,如果请求需要调用 JNDI 搜索操作,那么就调用搜索处理程序。 MINA 还维护了一个线程池。如果处理程序正忙着处理前一个操作,那么事件会临时保存在线程池中,直 到得到处理。 在 图 2 中可以看到操作 JNDI 的协议提供者、MINA 接口、类以及操作处理程序。 ApacheDS 框架最大的优势可能是它使用公共的目录服务(JNDI)处理不同的协议提供者。这意味 着可以使用 ApacheDS |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |