[Seasar-user:21983] Re: S2Directoryについて

Jun Futagawa [E-MAIL ADDRESS DELETED]
2014年 10月 21日 (火) 18:34:14 JST


ふたがわ (jfut) です。

> 「2 個以降のオブジェクトクラスが使用されていなかったのを修正しました。」が影響しているのか、
> 検索処理で@ObjectClassesに3つ以上のオブジェクトクラスを設定した場合に以下のエラーが発生するようになりました。

すいません、修正内容が適当過ぎたようでした。

再度修正して Snapshot Repository へデプロイしましたのでお試しください。
https://github.com/seasarorg/s2directory/pull/6
http://maven.seasar.org/

> ・@ObjectClasses({})と指定した場合も、全検索でエラーとなります。

上記はエラーになります。

よろしくお願いします。

-- 
Jun Futagawa

On 2014/10/21 16:48, tomo wrote:

> ふたがわ様
> 
> お世話になります。 村瀬です。
> 
> SNAPSHOTの確認を行いました。
> ObjectClassのtopについては問題なく動作いたしました。
> 
> ですが、こちらの環境では、
> 「2 個以降のオブジェクトクラスが使用されていなかったのを修正しました。」が影響しているのか、
> 検索処理で@ObjectClassesに3つ以上のオブジェクトクラスを設定した場合に以下のエラーが発生するようになりました。
> 
> org.seasar.directory.exception.DirectoryRuntimeException:
> [DIR0001]javax.naming.directory.InvalidSearchFilterException:
> Unbalanced parenthesis; remaining name 'dc=XXX,dc=ne,dc=jp'
>  at org.seasar.directory.impl.BasicDirectoryHandler.search(BasicDirectoryHandler.java:180)
>  at org.seasar.directory.impl.BasicDirectoryHandler.search(BasicDirectoryHandler.java:160)
> ・・・
> 
> ・Filterの内容は 「(&(&(objectClass=XXX)(objectClass=XXX))(objectClass=XXX)」です。
> ・オブジェクトクラスが2 個の場合は正常に検索されました。
> ・@ObjectClasses({})と指定した場合も、全検索でエラーとなります。
>    (エンティティからフィルタを組み立てて検索する場合はそちらが有効となり検索できました。)
> 
> 使用したjarファイルは以下のものです。
> ・s2-directory-0.7.1-20141021.054354-10.jar
> ・s2-directory-tiger-0.7.1-20141021.054415-9.jar
> 
> 以上、お手数ですがご確認いただけますでしょうか。
> 
> 2014年10月21日 14:49 Jun Futagawa <jfut @ integ.jp>:
>> ふたがわ (jfut) です。
>>
>>>> これも DirectoryControlProperty へ defaultObjectClass で
>>>> 指定できるようにし、未設定時のデフォルトは、
>>>> <property name="defaultObjectClass ">"top"</property> 相当、
>>>> <property name="defaultObjectClass ">""</property> としたら、
>>>> 何も設定しないというようにするというので如何でしょうか。
>>
>> プロパティ名を abstractObjectClasses にし、DirectoryControlProperty へ
>> 設定できるようにしました。デフォルトではこれまでどおり top が設定されています。
>> https://github.com/seasarorg/s2directory/blob/master/s2directory/s2-directory-examples/src/main/resources/directory.dicon
>> https://github.com/seasarorg/s2directory/pull/4
>>
>> top を追加したくない場合は、
>> <property name="abstractObjectClasses">new String[] {""}</property>
>> と設定すると何も追加しません。
>>
>> Snapshot Repository へデプロイしましたのでお試しください。
>> http://maven.seasar.org/
>>
>> ついでに直した別のバグ修正も含んでいます。
>> https://github.com/seasarorg/s2directory/pull/5
>>
>> よろしくお願いします。
>>
>> --
>> Jun Futagawa
>>
>> On 2014/10/20 17:51, tomo wrote:
>>
>>> ふたがわ様
>>>
>>> お世話になります。 村瀬です。
>>>
>>>
>>>> これも DirectoryControlProperty へ defaultObjectClass で
>>>> 指定できるようにし、未設定時のデフォルトは、
>>>> <property name="defaultObjectClass ">"top"</property> 相当、
>>>> <property name="defaultObjectClass ">""</property> としたら、
>>>> 何も設定しないというようにするというので如何でしょうか。
>>>
>>> はい、上記の方法でお願いします。
>>>
>>>> 複数ソースの場合は、directorydao.dicon ごと 2 つ用意して、
>>>> そこから incude する directory.dicon も 2 つ用意することになるかと
>>>> 思いますが、その場合に、それぞれに上記のように
>>>> directory1.directoryControlProperty,
>>>> directory2.directoryControlProperty などを
>>>> 指定する・しないでも上手くいかないでしょうか?
>>>
>>> やっぱりそうですか、うすうすはそんなような気がしていました。
>>> directoryControlProperty のコンポーネント名を固定することは
>>> やはり問題ですよね。
>>> 承知しました。 directorydao.dicon、 directory.diconを複数用意する
>>> 方法を検討します。(2つ用意して接続が成功することには成功しました。)
>>>
>>> 以上、よろしくお願いいたします。
>>>
>>>
>>> 2014年10月20日 17:25 Jun Futagawa <jfut @ integ.jp>:
>>>> ふたがわ (jfut) です。
>>>>
>>>> On 2014/10/20 16:02, tomo wrote:
>>>>
>>>>> SNAPSHOTの確認を行い、TLS接続の件も含め、問題ないことを確認しました。
>>>>
>>>> 確認ありがとうございます。
>>>>
>>>>> そこで、一点確認ですが、挿入処理の時にobjectClassにアノテーションで指定していない
>>>>> topが自動設定されるのは、S2Directoryの仕様でしょうか。
>>>>> (移行元のデータにはtopが設定されていないので、どちらが一般的に正しいのかと。。。)
>>>>
>>>> S2Directory が top を追加しています。
>>>>
>>>> top が必須だと思っていましたが、OpenLDAP へ
>>>> top なしでエントリを作ってみると作れたので無くても良いようです。
>>>>
>>>> RFC には、
>>>>
>>>> The objectClass attribute is present in
>>>> every entry, with at least two values.  One of the values is either
>>>> "top" or "alias".
>>>>
>>>> とあるので、そもそも top 固定もあまり良くないようでした。
>>>> これも DirectoryControlProperty へ defaultObjectClass で
>>>> 指定できるようにし、未設定時のデフォルトは、
>>>> <property name="defaultObjectClass ">"top"</property> 相当、
>>>> <property name="defaultObjectClass ">""</property> としたら、
>>>> 何も設定しないというようにするというので如何でしょうか。
>>>>
>>>> https://www.ietf.org/rfc/rfc2256.txt
>>>> http://www.openldap.org/lists/openldap-software/200504/msg00226.html
>>>>
>>>>> こちらについて、複数のDirectory Serverへ接続する場合に、
>>>>> 各Directory Serverの設定をDirectoryControlPropertyを使用してdirectory.diconへ
>>>>> 複数設定できないかと確認したところ、TooManyRegistrationRuntimeExceptionが発生します。
>>>>> directorydao.diconの設定を以下のようにすると動作するようになるのですが、
>>>>> directorydao.diconの変更点がここだけなのでjarに含まれるファイルで
>>>>> 対応することはできないでしょうか。
>>>>> (DirectoryControlPropertyを複数指定することについて問題があればダメですが。。。)
>>>>>
>>>>> <component class="org.seasar.directory.impl.DirectoryDataSourceFactoryImpl"/>
>>>>>>>>>> <component class="org.seasar.directory.impl.DirectoryDataSourceFactoryImpl">
>>>>> <arg>directoryControlProperty</arg>
>>>>> </component>
>>>>
>>>> これは directorydao.dicon の中で、定義されていないかもしれない
>>>> directoryControlProperty という名前のコンポーネントを期待することに
>>>> なってしまうので、デフォルトとしては設定しない方が良い気がしています。
>>>>
>>>> 複数ソースの場合は、directorydao.dicon ごと 2 つ用意して、
>>>> そこから incude する directory.dicon も 2 つ用意することになるかと
>>>> 思いますが、その場合に、それぞれに上記のように
>>>> directory1.directoryControlProperty,
>>>> directory2.directoryControlProperty などを
>>>> 指定する・しないでも上手くいかないでしょうか?
>>>>
>>>> よろしくお願いします。
>>>>
>>>> --
>>>> Jun Futagawa
>> _______________________________________________
>> Seasar-user mailing list
>> Seasar-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-user
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user


Seasar-user メーリングリストの案内