代码之家  ›  专栏  ›  技术社区  ›  Nicholas Trandem

如何在Java EE容器中设置LDAP连接池?

  •  5
  • Nicholas Trandem  · 技术社区  · 17 年前

    我需要将LDAP contextSource放入Java EE容器的JNDI树中,以便容器内的应用程序可以使用它。

    我使用Spring LDAP对ORACLE OVD执行查询。对于开发,我只需在Springxml配置文件中设置contextSource。然而,对于生产环境,我需要能够使用JNDI查找从容器中获取连接/上下文(如下所示: http://forum.springframework.org/showthread.php?t=35122&highlight=jndi ).不允许我访问生产OVD实例的URL/username/pwd,因此似乎排除了将其放入jndi.properties文件的可能性。

    理想情况下,我希望有一个连接池(就像JDBC一样),因为我的应用程序可能同时执行许多LDAP查询。从JNDI查找中抓取对象并将其注入我的SimpleLdapTemplate似乎很简单,但我不知道如何将连接/上下文/池引入JNDI树。我需要构建它并将其打包成RAR吗?如果是这样,有哪些选项可以让运营团队以开发人员无法访问的方式指定URL/username/pwd?

    我使用的特定容器是OAS/OC4J,尽管我欢迎在其他容器上也有效的策略。

    3 回复  |  直到 13 年前
        1
  •  8
  •   Nicholas    17 年前

    具体来说,在LDAP连接的实际池化方面,如果您使用的是内置的JNDI LDAP提供程序,则连接已经使用类似于JDBC数据源的语义进行了池化,其中为不同的LDAP URL和安全属性维护了单独的池。

    创建JNDI时 DirContext ,将属性com.sun.jndi.ldap.connect.pool配置为 符合事实的 并且将启用池化。

    有关LDAP池的更多信息 here .

    配置LDAP池的详细信息如下 here .

        2
  •  0
  •   Spencer Kormos    17 年前

    您是否可以设置LDAP的开发版本并使用它?然后,您可以使用jndi.properties文件,该文件是特定于环境的,但与您的系统无关。

    编辑:这里的区别在于,当您构建应用程序时,管理员可以将其部署到生产系统,从而保护宝贵的ldap密码,因为它只存在于生产箱上的属性文件中。

        3
  •  0
  •   Jérôme Ruillier Jérôme Ruillier    17 年前

    使用jboss,您可以将外部JNDI上下文联合到jboss服务器JNDI名称空间中。 您所要做的就是在MBean配置文件中描述LDAP访问。 您还可以启用缓存。

    我们正在使用此解决方案访问Ative Directory服务器。

    http://www.jboss.org/community/docs/DOC-9726