0
데이터베이스의 LDAP 인터페이스를 구축 중입니다. 클라이언트가 bind() 요청을하면 데이터베이스를 검색하여 유효한지 확인합니다.UnboundID : processBindRequest 반환 값을 캡슐화하는 방법?
public class Main {
LDAPListener listener ;
Main() {}
public static void main(String[] args) {
Main main = new Main();
int port = main.StartServer();
try {
LDAPConnection cn = new LDAPConnection("localhost",port);
System.out.println("."+cn.isConnected()+" "+cn.getConnectedPort());
cn.bind("uid=user,ou=People,dc=example,dc=com", "pass");
cn.close();
main.StopServer();
} catch (Exception e){e.printStackTrace();
main.StopServer();}
}
public int StartServer() {
int listenPort = 0;
RequestHandler requestHandler = new RequestHandler();
LDAPListenerConfig config = new LDAPListenerConfig(listenPort, requestHandler);
listener = new LDAPListener(config);
try {
listener.startListening();
System.out.println(">port "+listener.getListenPort());
} catch (Exception e){System.out.println("e1> "+e.getMessage());}
return listener.getListenPort();
}
public void StopServer(){
System.out.println(">shutdown");
listener.shutDown(true);
}
}
그럼, 난, 데이터베이스와 통신 반환 값으로 레코드를 얻을 수 LDAPListenerRequestHandler을 수정
class RequestHandler extends LDAPListenerRequestHandler {
@Override
public LDAPMessage processBindRequest(int arg0, BindRequestProtocolOp arg1,
List<Control> arg2) {
String uid = arg1.getBindDN();
String pass = arg1.getSimplePassword();
System.out.println(">bind: "+ uid);
// Database query: SELECT * FROM user WHERE username='uid' AND password='pass'
// Get the record as return value
return null;
}
}
내가 그것을 실행하면, 난 바인드 줄에서 오류 메시지가 있어요 :
LDAPException(resultCode=80 (other), errorMessage='An unexpected exception was thrown while attempting to process the requested operation: NullPointerException(trace='run(LDAPListenerClientConnection.java:461)', revision=15579)', diagnosticMessage='An unexpected exception was thrown while attempting to process the requested operation: NullPointerException(trace='run(LDAPListenerClientConnection.java:461)', revision=15579)')
at com.unboundid.ldap.sdk.LDAPConnection.bind(LDAPConnection.java:1881)
at com.unboundid.ldap.sdk.LDAPConnection.bind(LDAPConnection.java:1799)
을
나는 그것이 null을 반환 processBindRequest()에 의해 발생합니다 생각합니다. 해당 프로세스에서 LDAPMessage로 데이터베이스 레코드를 캡슐화하는 방법은 무엇입니까?
답장을 보내 주셔서 감사합니다. 편집 후 processBindRequest() 여전히 동일한 오류가 발생합니다. ResultCode = 80 – vladschwartz
com.unboundid.util.Debug 클래스에 설명 된대로 디버그 로깅을 사용하고 예외 발생 위치를 확인하고 예외가 발생하는 것을 확인하는 것이 좋습니다. 사용중인 전체 코드를 제공하지 않았기 때문에 특정 문제가 무엇인지 알기가 어렵습니다. –