アプリケーションで Unboundid In-Memory Directory Server を使用していますが、これまでのところうまく機能しています (Apache DS よりもはるかに優れています)。しかし、アプリケーションが完了し、サーバーをシャットダウンしたい場合、「ハング」したように見えます。つまり、shutDown() コマンドが実行されますが、スレッドは停止しません。
InMemoryDirectoryServerConfig configuration = new InMemoryDirectoryServerConfig(baseDNs);
configuration.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", port));
configuration.setSchema(null);
server = new InMemoryDirectoryServer(configuration);
server.startListening();
LDAPConnection ldapConnection = new LDAPConnection("localhost", PORT);
// lots of processing the LDAP data
ldapConnection.close();
server.shutDown("default", true);
例外などをスローせずに実行されますが、それでもシャットダウンしません。
面白いことに、上記のコードを処理なしで実行すると、動作します。
編集
処理コーディングでは、基本的にldapConnection.search()
and をldapConnection.getEntry()
数回呼び出して、ユーザーとグループの情報を取得します。次に、この情報を使用してオブジェクトを作成し、DB に挿入します。
編集2
shutDown("default",true)
orshutDown(true)
が呼び出されても違いはありません。あとで教えていただいた他のものも試してみます。