[Seasar-user:12098] Re: 【s2directory】DirContextを使いまわしたい

鈴木 順 [E-MAIL ADDRESS DELETED]
2007年 12月 14日 (金) 12:59:20 JST


ふたがわさん

お世話になっております。鈴木です。

対応の方ありがとうございます。

取り急ぎ現状を報告します。
外出してしまうので、次の報告は今夜か来週になってしまいます。

1.SNAPSHOTを取得しました。
2.directory.diconにPOOLの設定を追加しました。

上記手順を実施して処理を実施しました。
処理は途中で止まることなく正常に終了したのですが、
所要時間が20分程度かかりました。

前回DirContextの生成を一度にした場合は、
20秒程度なので、少し遅いかなと感じます。

POOLが正しく使えているかを確認したいと思います。

あと
directory.diconにはdirectoryControlPropertyの
SSLの設定など固有の値のみ定義して
instance="request"とし、
実行時にURL/BaseND/USR/PWDをsetしています。
URL/BaseND/USR/PWDは実行時に決定する事になるので、
上記のような方法を取っています。
これでもPOOLは有効になるでしょうか?

以上



On Fri, 14 Dec 2007 05:35:05 +0900
Jun Futagawa <[E-MAIL ADDRESS DELETED]> wrote:

> ふたがわです。
> 
> On 2007/12/13 16:48,鈴木 順 wrote:
> 
> > 現状DirectoryDaoの各メソッドを呼ぶたびにDirContextが生成されると思います。
> > その点で下記のような問題が発生しています。
> > 
> > 今実装している処理では1000程度のOBJECTをAD上に生成します。
> > こちらの環境(低マシンスペック)やAD固有の問題かもしれませんが、
> > ある程度処理が進むとDirContext生成時に下記エラーが発生します。
> > (30程度のOBJECT生成後)
> > 
> > org.seasar.directory.exception.CommunicationRuntimeException: [EDIR0002]ディレクトリサーバに接続できませんでした。
> > サーバが稼働しているか確認してください。(接続先: ldaps://xxxxxx:636)
> > 	at org.seasar.directory.impl.BasicDirectoryHandler.getConnection(BasicDirectoryHandler.java:96)
> > 	at org.seasar.directory.impl.BasicDirectoryHandler.search(BasicDirectoryHandler.java:162)
> > 	at org.seasar.directory.impl.BasicDirectoryHandler.searchOneLevel(BasicDirectoryHandler.java:185)
> 
> ご報告ありがとうございます。
> 
> 関連しそうなバグとして、NamingEnumerationを明示的にclose()していませんでした。
> これは明示的にclose()するべきと下記の資料にあったため、そのように修正しました。
> http://www-1.ibm.com/support/entdocview.wss?uid=swg21191219
> https://www.seasar.org/issues/browse/DIRECTORY-19
> 
> 上記だけでもご報告いただいた件は解決するかもしれませんが、
> コネクションを毎回生成するのは効率が良くないので、
> コネクションプーリングされるように修正しました。
> SunのJava 2 SDK 1.4.1以降であれば利用できます。
> https://www.seasar.org/issues/browse/DIRECTORY-20
> 
> directory.diconに下記の設定例を参考にconnectionPoolの
> コンポーネント定義を追加してください。
> http://svn.seasar.org/browse/trunk/s2directory/s2-directory/src/test/resources/directory.dicon?view=markup&root=sandbox.s2directory&pathrev=138
> 
> MavenにSNAPSHOTをDeployしてあります。
> 
> <dependency>
>   <groupId>org.seasar.directory</groupId>
>   <artifactId>s2-directory</artifactId>
>   <version>0.6-SNAPSHOT</version>
> </dependency>
> 
> テストは通っているのでたぶん上手くいくとは思いますが、
> おかしな挙動がありましたらお知らせください。
> 
> > とりあえずBasicDirectoryHandlerを直して、
> > DirContextをThreadLocalで管理するように変更
> >   +
> > COLSE部分を適宜コメントアウトし、
> > Mainメソッド終了まで同じDirContextを使用するようにしたら
> > 処理は20秒程度で正常に終了しました。
> > (ちなみにgetConnectionの所要時間は2秒程度です)
> > 
> > Aspectを利用してメッソドレベルで作業単位を指定できて、
> > その中では同じDirContextを使用できないか
> > と画策しております。(Txと同じノリです)
> > 
> > そこまでをお願いするのは心苦しいので、
> > BasicDirectoryHandlerを継承している各種Handler
> > (INSERT/SELECT/DELETE/AUTHなど)
> > をdicon上で定義していただくか、
> > DirContextの生成、開放部分を切り出していただき
> > それをdiconに定義していただく事などは可能でしょうか?
> 
> こちらは今回の修正方針で問題が解決しなさそうでしたら考えたいと思います。
> 
> よろしくお願いします。
> 
> # あと、もしかしたら0.6のリリースは来週になるかもしれません(汗。
> 
> -- 
> ふたがわ
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user




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