服务器URL启动并运行时,LdapContext套接字关闭异常

时间:2015-01-27 15:41:22

标签: java java-ee ldap jndi

我无法判断服务器上是否存在凭据/ SSL问题或LDAP配置问题。我尝试访问本地版本,我没有问题(然后再次本地Ldap和服务器设置有点不同)。绝对不会关闭套接字,因为我们在处理系统中使用该URL并且它没有关闭。

此行的代码失败:

NamingEnumeration<?> namingEnum = ctx.search("dc=barney,dc=com", "(objectclass=person)", getSimpleSearchControls());    

代码块:

final String ldapAdServer = "ldap://myspecialhost.barney.us:389";                               
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, ldapAdServer);    
LdapContext ctx = new InitialLdapContext(env, null);
            ctx.setRequestControls(null);
   NamingEnumeration<?> namingEnum = ctx.search("dc=barney,dc=com", "(objectclass=person)", getSimpleSearchControls()); 

堆栈跟踪在这里:

javax.naming.ServiceUnavailableException: tiffany.barney.ca:389; socket closed; remaining name 'dc=barney,dc=com'
    at com.sun.jndi.ldap.Connection.readReply(Connection.java:437)
    at com.sun.jndi.ldap.LdapClient.getSearchReply(LdapClient.java:613)
    at com.sun.jndi.ldap.LdapClient.search(LdapClient.java:536)
    at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1965)
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1827)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1752)
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:321)
    at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:248)
    at com.barney.shopping.tiffany.LDAPImpTest.main(LDAPImplTest.java:154)

编辑1: 我尝试使用不同的网址,我得到一个连接超时。这个新网址是否更正确并且我可能更接近正确的网址?

编辑2:

new stacktrace

javax.naming.CommunicationException: possibleURL:389 [Root exception is java.net.ConnectException: Connection timed out: connect]
    at com.sun.jndi.ldap.Connection.<init>(Connection.java:209)
    at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:116)
    at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1582)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2678)
    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:296)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
    at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
    at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:134)
    at blablalbla.LDAPInterfaceTest.main(LDAPInterfaceTest.java:154)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:189)
    at com.sun.jndi.ldap.Connection.createSocket(Connection.java:351)
    at com.sun.jndi.ldap.Connection.<init>(Connection.java:186)
    ... 13 more

0 个答案:

没有答案