【问题标题】:Is there a standalone Java library which provides LDAP style parsing?是否有提供 LDAP 样式解析的独立 Java 库?
【发布时间】:2009-06-22 13:48:14
【问题描述】:

我正在寻找一个独立的 Java 库,它允许我解析 LDAP 样式的过滤器表达式。这样的东西是否可用,或者是否建议使用 ANTLR 并自己构建它?

作为背景:过滤器本身是通过网络提交的,我想创建合适的休眠条件。 我没有对 LDAP 做任何事情!

对于传输和转换用户定义查询的技术独立解决方案的任何其他想法也表示赞赏。

【问题讨论】:

    标签: java parsing filter ldap


    【解决方案1】:

    您可以使用 apache 目录服务器的共享 LDAP 库。

    它在 maven 中可用

    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap</artifactId>
      <version>0.9.15</version>
    </dependency>
    

    你可以像这样使用它:

    final ExprNode filter = FilterParser.parse(filterString);
    

    【讨论】:

      【解决方案2】:

      您还可以考虑使用 Apache directory server 来使用它的一些类,例如 lavinio 对 OpenLDAP 的建议,或者将其嵌入到您的应用程序中。

      【讨论】:

        【解决方案3】:

        OpenDS 在名为 LDAPFilter 的类上有一个静态方法,简称为 decode,它接受一个字符串参数,如下所示:

        LDAPFilter parsed = LDAPFilter.decode(filter);
        

        javadoc 是here

        它与 Apache DS 的 FilterParser 非常相似,但处理结果略有不同,因为没有真正的实质性继承层次结构。我发现的一个优点是它没有重写可扩展的匹配规则语法,因此如果您将其视为验证和规范化过滤器的一种方式,请牢记这一点。

        需要注意的是,两个解析器都希望事先过滤掉空格,因此请确保事先在任何输入字符串上运行类似这样的内容:

        filter.replaceAll("\\s?([\\(\\|&!=:\\)])\\s?", "$1");
        

        希望这会有所帮助。

        【讨论】:

          【解决方案4】:

          我知道的唯一 LDAP 解析库是 .NET 的 System.DirectoryServices。*理论上,您应该能够在 Mono 中使用这个库来获得技术独立性(除了来自 mono 或 .net 本身)。

          【讨论】:

            【解决方案5】:

            您是否查看过 jldap,它是 OpenLDAP 的一部分?

            source is available,还有用于解析 LDAP URL 和 搜索表达式 的类。这超出了您的需要,但您可以只使用对象,而无需针对 LDAP 服务器实际执行它们,如果您想要这样做的话。

            【讨论】:

              【解决方案6】:

              澄清一下,如果您不尝试查询 ldap,您是否将它们设置为 LDAP 样式查询。

              你看过类似的东西吗?

              http://josql.sourceforge.net/

              【讨论】:

              • 很有趣,但不是我想要的。在一种情况下,我确实直接查询 java 对象,但我也使用相同的查询来构造 SQL 或 Hibernate 查询。
              【解决方案7】:

              大多数 OSGi 容器也包含此功能,因为 these kinds of filters are part of the OSGi specification

              【讨论】:

                猜你喜欢
                • 2023-03-22
                • 2013-11-18
                • 2013-03-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多