我在我的应用程序中使用 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()
和ldapConnection.getEntry()
多次获取一些用户和组信息。然后它使用此信息创建对象,然后将它们插入数据库。
编辑 2
shutDown("default",true)
或被shutDown(true)
调用没有区别。我将测试您稍后提到的其他内容。