Java LDAP通信错误
我使用下面的代码连接到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();
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端口上是否正在运行某些内容。