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

鈴木 順 [E-MAIL ADDRESS DELETED]
2007年 12月 13日 (木) 16:48:50 JST


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

現状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)

とりあえずBasicDirectoryHandlerを直して、
DirContextをThreadLocalで管理するように変更
  +
COLSE部分を適宜コメントアウトし、
Mainメソッド終了まで同じDirContextを使用するようにしたら
処理は20秒程度で正常に終了しました。
(ちなみにgetConnectionの所要時間は2秒程度です)

Aspectを利用してメッソドレベルで作業単位を指定できて、
その中では同じDirContextを使用できないか
と画策しております。(Txと同じノリです)

そこまでをお願いするのは心苦しいので、
BasicDirectoryHandlerを継承している各種Handler
(INSERT/SELECT/DELETE/AUTHなど)
をdicon上で定義していただくか、
DirContextの生成、開放部分を切り出していただき
それをdiconに定義していただく事などは可能でしょうか?

厚かましいお願いで申し訳ありませんが、
御検討頂けると幸いです。

以上




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