1

LDAP ルックアップを実行できる Grails アプリケーションを構築しようとしています。私はいくつかのガイド(リンクテキストと他のいくつか)に従ってきましたが、私は恐れています。

関連するソース コード: config.groovy から:

ldap {
directories    { 
    dir1 {
        url = "ldap://dc01"
        base = "ou=someou,dc=check,dc=nl"
        userDn = "cn=Administrator,cn=Users,dc=check,dc=nl"
        password = "wowthisisnothepassword"
    }
}

schemas = [
    ldapclient.GldapoSchemaClassForUser
]}

私のドメインクラス:

package ldapclient
import gldapo.schema.annotation.GldapoNamingAttribute
import gldapo.schema.annotation.GldapoSynonymFor
import gldapo.schema.annotation.GldapoSchemaFilter

@GldapoSchemaFilter("(objectclass=person)")
class GldapoSchemaClassForUser {
   @GldapoNamingAttribute
   String uid

   @GldapoSynonymFor("cn")
   String name

   @GldapoSynonymFor("mail")
   String email

   @GldapoSynonymFor("uid")
   String username

   @GldapoSynonymFor("fullname")
   String fullName
}

そして私のコントローラー:

package ldapclient

class AdController {
def defaultAction = "list"

List matches = GldapoSchemaClassForUser.findAll(
    filter: "(name=s*)"
)

def list = {
    [ "adMatches" : matches.list() ]
}}

私のプログラムは (私が知る限り) 多くのドキュメントに従って動作するはずですが、これを実行することはできません。スローされたエラー:

原因: groovy.lang.MissingMethodException: メソッドのシグネチャがありません: static ldapclient.GldapoSchemaClassForUser.findAll() は引数の型に適用されます: (java.util.LinkedHashMap) 値: [[filter:(name=s )]] ldapclient で.AdController.(AdController.groovy:6)*

何が起こっている/間違っているかの手がかりはありますか? 私は Grails 1.2.3 を使用しており、最新バージョンの LDAP プラグインを使用しています。プロジェクトはクリーンです (新しく作成されました)。

前もって感謝します!


返信ありがとうございます。Grails 1.3.4 にアップグレードし、いくつかのファイルを移動しました。これはうまくいきましたが、それでもこの厄介なエラーが発生します。

Error creating bean with name 'ldapclient.AdController': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [ldapclient.AdController]: Constructor threw exception; nested exception is groovy.lang.MissingMethodException: No signature of method: static ldapclient.GldapoSchemaClassForUser.findAll() is applicable for argument types: (java.util.LinkedHashMap) values: [[directory:dir1, filter:(uid=myname,ou=st,ou=ouou,dc=dc,dc=dcdc)]] Possible solutions: findAll(groovy.lang.Closure), find(groovy.lang.Closure)
4

3 に答える 3

3

スキーマ クラスはどこにありますか? このプラグインは正常に動作しています (Grails 1.3.4 でも)。プラグインへのリンクは古いページであることに注意してください。これが私が信じている最新のものです:Grails LDAP Plugin

構成で指定する代わりに、 grails-app/ldapディレクトリにスキーマ クラスをドロップできるように見えること以外に、大きな違いがあるとは思わないでください。構成で指定されたスキーマと同じ方法で行いますが、 grails-app/ldap フォルダーで試してみる価値はありますか?

于 2010-10-05T09:05:02.337 に答える
2

ドキュメントによると、findAll メソッドには次の定義しかありません (Book - はサンプル ドメイン クラス)。

Book.findAll()
Book.findAll( String query )
Book.findAll( String query, Collection positionalParams )
Book.findAll( String query, Collection positionalParams, Map paginateParams )
Book.findAll( String query, Map namedParams )
Book.findAll( String query, Map namedParams, Map paginateParams )
Book.findAll( Book example )

そしてあなたのコード:

List matches = GldapoSchemaClassForUser.findAll(
    filter: "(name=s*)"
)

次のように書き換えることができます。

List matches = GldapoSchemaClassForUser.findAllByNameLike("s%")

または基準定義を使用します。

List matches = GldapoSchemaClassForUser.list() {
     like("name","s%")
}

フィルターを使用するには、Hibernate-filter プラグインを参照してください

于 2010-10-01T11:30:30.653 に答える
0

grails 2.2とldapプラグイン0.8.2を使用して、数日間同じ問題が発生しました。gldapo メーリング リストのアーカイブを調べたところ、スキーマ クラスに Gldapo の動作が挿入されておらず、find/findAll() メソッドが正しく解決されていないことが原因であることがわかりました。このスレッドを参照してください - http://markmail.org/message/v5ulptrxzfoq4ml7

grails Config.groovy スクリプトで 'import myPkg.SchemaClass' を使用していませんでした。

于 2013-01-31T20:58:27.747 に答える