Java LDAP通信错误

Java LDAP通信错误,java,ldap,runtime-error,connectexception,communicationexception,Java,Ldap,Runtime Error,Connectexception,Communicationexception,我使用下面的代码连接到ldap并为用户分配角色 IdentityStoreFactoryBuilder builder = new IdentityStoreFactoryBuilder(); IdentityStoreFactory oidFactory = null; IdentityStore oidStore = null; Hashtable factEnv = new Hashtable();

我使用下面的代码连接到ldap并为用户分配角色

    IdentityStoreFactoryBuilder builder =
            new IdentityStoreFactoryBuilder();
        IdentityStoreFactory oidFactory = null;
        IdentityStore oidStore = null;
        Hashtable factEnv = new Hashtable();
        Hashtable storeEnv = new Hashtable();
        factEnv.put(OIDIdentityStoreFactory.ST_SECURITY_PRINCIPAL, "Obu");
        factEnv.put(OIDIdentityStoreFactory.ST_SECURITY_CREDENTIALS,
                    "password123");
        factEnv.put(OIDIdentityStoreFactory.ST_LDAP_URL,
                    "ldap://localhost:3060/");// here i'm getting exception
        oidFactory =
                builder.getIdentityStoreFactory("oracle.security.idm.providers.oid.OIDIdentityStoreFactory",
                                                factEnv);
        storeEnv.put(OIDIdentityStoreFactory.ADF_IM_SUBSCRIBER_NAME,
                     "dc=us,dc=oracle,dc=com");
        oidStore = oidFactory.getIdentityStoreInstance(storeEnv);
异常堆栈跟踪为:

Exception in thread "main" oracle.security.idm.ConfigurationException: javax.naming.CommunicationException: localhost:3060 [Root exception is java.net.ConnectException: Connection refused: connect]
        at oracle.security.idm.providers.stdldap.TestConnectionPool.execute(LDIdentityStoreFactory.java:1026)
        at oracle.security.idm.providers.stdldap.LDIdentityStoreFactory.setupConnPool(LDIdentityStoreFactory.java:620)
        at oracle.security.idm.providers.stdldap.LDIdentityStoreFactory.setup(LDIdentityStoreFactory.java:333)
        at oracle.security.idm.providers.oid.OIDIdentityStoreFactory.<init>(OIDIdentityStoreFactory.java:56)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at oracle.security.idm.IdentityStoreFactoryBuilder.getIdentityStoreFactory(IdentityStoreFactoryBuilder.java:128)
        at view.AddRolesToUsers.main(AddRolesToUsers.java:60)
    Caused by: javax.naming.CommunicationException: localhost:3060 [Root exception is java.net.ConnectException: Connection refused: connect]
        at com.sun.jndi.ldap.Connection.<init>(Connection.java:210)
        at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:118)
        at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1580)
        at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2652)
        at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:293)
        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 oracle.security.idm.providers.stdldap.TestConnectionPool.run(LDIdentityStoreFactory.java:1006)
    Caused by: java.net.ConnectException: Connection refused: 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:352)
        at com.sun.jndi.ldap.Connection.<init>(Connection.java:187)
线程“main”中的异常oracle.security.idm.ConfigurationException:javax.naming.CommunicationException:localhost:3060[根异常为java.net.ConnectException:Connection拒绝:connect] 位于oracle.security.idm.providers.stdldap.TestConnectionPool.execute(LDIdentityStoreFactory.java:1026) 位于oracle.security.idm.providers.stdldap.LDIdentityStoreFactory.setupConnPool(LDIdentityStoreFactory.java:620) 位于oracle.security.idm.providers.stdldap.LDIdentityStoreFactory.setup(LDIdentityStoreFactory.java:333) 位于oracle.security.idm.providers.oid.OIDIntityStoreFactory。(OIDIntityStoreFactory.java:56) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 位于java.lang.reflect.Constructor.newInstance(Constructor.java:513) 位于oracle.security.idm.IdentityStoreFactoryBuilder.getIdentityStoreFactory(IdentityStoreFactoryBuilder.java:128) 在view.AddRolesToUsers.main(AddRolesToUsers.java:60) 原因:javax.naming.CommunicationException:localhost:3060[根异常为java.net.ConnectException:连接被拒绝:连接] 位于com.sun.jndi.ldap.Connection(Connection.java:210) 位于com.sun.jndi.ldap.LdapClient.(LdapClient.java:118) 位于com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1580) 位于com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2652) 位于com.sun.jndi.ldap.LdapCtx.(LdapCtx.java:293) 位于com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175) 位于com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193) 位于com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136) 位于com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66) 位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667) 位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) 位于javax.naming.InitialContext.init(InitialContext.java:223) 位于javax.naming.ldap.InitialLdapContext。(InitialLdapContext.java:134) 位于oracle.security.idm.providers.stdldap.TestConnectionPool.run(LDIdentityStoreFactory.java:1006) 原因:java.net.ConnectException:连接被拒绝:连接 位于java.net.PlainSocketImpl.socketConnect(本机方法) 位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 位于java.net.socksocketimpl.connect(socksocketimpl.java:366) 位于java.net.Socket.connect(Socket.java:529) 位于java.net.Socket.connect(Socket.java:478) 位于java.net.Socket(Socket.java:375) 位于java.net.Socket(Socket.java:189) 在com.sun.jndi.ldap.Connection.createSocket(Connection.java:352)上 位于com.sun.jndi.ldap.Connection(Connection.java:187)
java.net.ConnectException:连接被拒绝
表示您为LDAP服务器指定的端口名不正确。还要检查您正在传递的其他参数,这些参数使其无法访问。

在端口上没有侦听任何内容。你从哪里得到3060端口的?通常的LDAP端口是389,对于LDAP是636。

我使用此链接配置LDAP:我使用此链接配置LDAP:请检查它并帮助我解决此问题。正如您提到的,我将端口更改为389和636,但重复相同的问题。这里我在OPSS中使用LDAP标识存储(OID)的默认端口是3060。如前所述,这些端口上显然没有监听内容。您可以尝试使用netstat来确定3060端口上是否正在运行某些内容。