在Java Spring Framework中进行LDAP绑定时出错

时间:2015-01-17 18:48:19

标签: spring opendj

我能够成功运行以下代码作为单个Java代码


import org.forgerock.opendj.ldap.*;
import org.forgerock.opendj.ldif.*;
public class LdapUpdate {
public void updateUser(String XYZ) {

String bindDN = "cn=Directory Manager";
String baseDN = "dc=root,dc=com";
String bindPassword = "XXXXXXX";
final LDAPConnectionFactory ldapfactory = new LDAPConnectionFactory ("localhost", 389);  

Connection connection = null;
try
{ 
  connection = ldapfactory.getConnection();
  connection.bind(bindDN, bindPassword.toCharArray());
  System.out.println("Authenticated as " + bindDN + ".");
}
catch (Exception e)  {
             System.err.println(e.getMessage());    
} 
finally
{    
     if (connection != null) connection.close();  
}
}
} 

但是,当我使用与函数调用相同的代码时

LdapUpdate lupdate = new LdapUpdate();          
lupdate.updateUser(IDAMMesgType);

在我的" Spring Based" Java项目我在

之前得到了以下错误
connection.bind(bindDN, bindPassword.toCharArray());

Jan 17, 2015 6:03:34 PM org.glassfish.grizzly.filterchain.DefaultFilterChain execute
WARNING: Exception during FilterChain execution
java.lang.ExceptionInInitializerError
at org.forgerock.opendj.ldap.ResultCode.<clinit>(ResultCode.java:60)
at com.forgerock.opendj.ldap.LDAPReader.decodeBindResult(LDAPReader.java:386)
at com.forgerock.opendj.ldap.LDAPReader.decodeProtocolOp(LDAPReader.java:1125)
at com.forgerock.opendj.ldap.LDAPReader.decode(LDAPReader.java:166)
at com.forgerock.opendj.ldap.LDAPClientFilter.handleRead(LDAPClientFilter.java:499)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at java.util.ResourceBundle.getBundle(ResourceBundle.java:1026)
at org.forgerock.i18n.LocalizableMessageDescriptor$AbstractLocalizableMessageDescriptor.getBundle(LocalizableMessageDescriptor.java:1141)
at org.forgerock.i18n.LocalizableMessageDescriptor$AbstractLocalizableMessageDescriptor.getFormatString(LocalizableMessageDescriptor.java:1070)
at org.forgerock.i18n.LocalizableMessageDescriptor$AbstractLocalizableMessageDescriptor.getFormatString(LocalizableMessageDescriptor.java:1038)
at org.forgerock.i18n.LocalizableMessageDescriptor$Arg0.<init>(LocalizableMessageDescriptor.java:83)
at org.forgerock.opendj.ldap.CoreMessages.<clinit>(CoreMessages.java:48)
... 19 more

Jan 17, 2015 6:03:34 PM org.glassfish.grizzly.filterchain.DefaultFilterChain execute
WARNING: Exception during FilterChain execution
java.lang.NoClassDefFoundError: Could not initialize class org.forgerock.opendj.ldap.ResultCode
at com.forgerock.opendj.ldap.LDAPClientFilter.handleClose(LDAPClientFilter.java:479)
at org.glassfish.grizzly.filterchain.ExecutorResolver$4.execute(ExecutorResolver.java:76)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.nio.NIOConnection.preClose(NIOConnection.java:690)
at org.glassfish.grizzly.nio.transport.TCPNIOConnection.preClose(TCPNIOConnection.java:97)
at org.glassfish.grizzly.nio.NIOConnection.close0(NIOConnection.java:422)
at org.glassfish.grizzly.nio.transport.TCPNIOConnection.close0(TCPNIOConnection.java:291)
at org.glassfish.grizzly.nio.NIOConnection.close(NIOConnection.java:405)
at org.glassfish.grizzly.nio.NIOConnection.closeSilently(NIOConnection.java:411)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:165)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:745)

在给出System.outs之后,我能够看到我的第一个System Out语句,这意味着已经建立了连接。

但是第二个System Out语句没有生成,我得到了如上所述的错误。

connection = ldapfactory.getConnection();
System.out.println("-----1. After Connection-------");
connection.bind(bindDN, bindPassword.toCharArray());
System.out.println("-----2. After Bind-------");

我认为这必须对Spring框架设置做一些事情。

我还导入并设置了所有相关的库。 任何想法我为什么会收到这个错误。

1 个答案:

答案 0 :(得分:0)

我的环境似乎存在问题。我不知道连接调用是如何搞砸并在某处丢失的。

我删除了代码和库文件。重新编写代码并包含所需的库,然后它像马一样运行。