You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Aliaksei Volkau (Jira)" <ji...@apache.org> on 2022/06/06 09:12:00 UTC
[jira] [Created] (DIRAPI-383) LdapNetworkConnection.unbind throws IOException
Aliaksei Volkau created DIRAPI-383:
--------------------------------------
Summary: LdapNetworkConnection.unbind throws IOException
Key: DIRAPI-383
URL: https://issues.apache.org/jira/browse/DIRAPI-383
Project: Directory Client API
Issue Type: Question
Affects Versions: 2.1.0
Reporter: Aliaksei Volkau
When trying to call LdapNetworkConnection.unbind catch the exception *IOException: An existing connection was forcibly closed by the remote host.*
Code:
LdapConnectionConfig connectionConfig = new LdapConnectionConfig();
connectionConfig.setLdapHost(//host);
connectionConfig.setLdapPort(//port);
connectionConfig.setName(//dn);
DefaultLdapConnectionFactory connectionFactory = new DefaultLdapConnectionFactory(connectionConfig);
connectionFactory.setTimeOut(30_000);
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
poolConfig.setLifo(false);
poolConfig.setMinIdle(1);
poolConfig.setMaxIdle(1);
poolConfig.setMaxTotal(1);
poolConfig.setMinEvictableIdleTimeMillis(1000 * 60 * 30L);
poolConfig.setNumTestsPerEvictionRun(3);
poolConfig.setSoftMinEvictableIdleTimeMillis(-1L);
poolConfig.setTestOnBorrow(false);
poolConfig.setTestOnReturn(false);
poolConfig.setTimeBetweenEvictionRunsMillis(-1L);
poolConfig.setBlockWhenExhausted(true);
LdapConnectionPool connectionPool = new LdapConnectionPool(new DefaultPoolableLdapConnectionFactory(connectionFactory), poolConfig);
try {
try (LdapConnection ldapConnection = connectionPool.getConnection()) {
System.out.println("connection start");
BindRequest bindRequest = new BindRequestImpl();
bindRequest.setSimple(true);
bindRequest.setName(//login);
bindRequest.setCredentials(//password);
BindResponse bindResponse = ldapConnection.bind(bindRequest);
System.out.println(bindResponse);
boolean okBind = false;
if (bindResponse != null && bindResponse.getLdapResult() != null && bindResponse.getLdapResult().getResultCode() != null) {
System.out.println("bind result " + bindResponse.getLdapResult().getResultCode());
if (bindResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
okBind = true;
System.out.println("bind completed");
}
}
if (okBind) {
try {
SearchRequest searchRequest = new SearchRequestImpl();
searchRequest.setBase(new Dn(//dn));
searchRequest.setFilter("(sAMAccountName=//login)");
searchRequest.setScope(SearchScope.SUBTREE);
searchRequest.addAttributes("*");
try (SearchCursor searchCursor = ldapConnection.search(searchRequest)) {
System.out.println("search start");
while (searchCursor.next()) {
if (searchCursor.isEntry()) {
Entry resultEntry = ((SearchResultEntry) searchCursor.get()).getEntry();
System.out.println(resultEntry);
}
}
if (searchCursor.getSearchResultDone() != null && searchCursor.getSearchResultDone().getLdapResult() != null && searchCursor.getSearchResultDone().getLdapResult().getResultCode() != null) {
System.out.println("search result " + searchCursor.getSearchResultDone().getLdapResult().getResultCode());
if (searchCursor.getSearchResultDone().getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
System.out.println("search completed");
}
}
}
} catch (LdapException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
if (ldapConnection.isConnected()) {
ldapConnection.unBind();
System.out.println("unbind completed");
}
}
} catch (LdapException e) {
e.printStackTrace();
} finally {
System.out.println("connection close");
}
} catch (Exception e) {
System.out.println("exception " + e.getClass().getSimpleName());
e.printStackTrace();
}
Result:
connection start
MessageType : BIND_RESPONSE
Message ID : 2
BindResponse
Ldap Result
Result code : (SUCCESS) success
Matched Dn : ''
Diagnostic message : ''
bind result SUCCESS
bind completed
search start
search result SUCCESS
search completed
[NioProcessor-1] WARN org.apache.directory.ldap.client.api.LdapNetworkConnection - An existing connection was forcibly closed by the remote host
java.io.IOException: An existing connection was forcibly closed by the remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:197)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:378)
at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:47)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:519)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1224)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1213)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
unbind completed
connection close
--
This message was sent by Atlassian Jira
(v8.20.7#820007)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@directory.apache.org
For additional commands, e-mail: dev-help@directory.apache.org