Вопрос Java (вызов методов с параметрами) с использованием UnboundID LDAP SDK API

Я использую UnboundID LDAP SDK для своего сервера LDAP. Я сделал способ подключения.

public static LDAPConnection connectSDK(String ip, Integer port, String id, String pw) throws LDAPException    {

    LDAPConnection ldap = new LDAPConnection(ip,port,id,pw);
    System.out.println("success");  
    return ldap;

}

В моем основном методе я вызываю эти методы с параметрами, и они отлично работают.

public static void main(String[] args) throws LDAPException {

    connectSDK("192.168.0.60",389,"******","*****");

}   

Я хотел пойти дальше. Я сделал метод поиска данных с использованием фильтра.

public static void searchSDK(String filter) throws LDAPException {

    LDAPConnection ldap = connectSDK(); 

/* Before calling a method with parameter, I used to connect with this,
 and use 'ldap' variable to put search results. 
Now, I am using a method with parameters. 
I don't know what to do with 'ldap' variable. 
If I delete it, 'SearchRequest' doesn't run.  
Also how can I continue to use the connection from connectSDK method? */

    SearchRequest searchRequest = new SearchRequest("c=kr",SearchScope.SUB,filter);
    SearchResult searchResult = ldap.search(searchRequest);
    System.out.println(searchResult);

}

В конечном счете, я хочу вызвать два из этих методов в моем main, как показано ниже.

public static void main(String[] args) throws LDAPException {
    //connect
    connectSDK("192.168.0.60",389,"*****","******");
    //search using a filter 
    searchSDK("hotdog");
}  

Мне нужен совет по методам searchSDK().
*1) как использовать созданный сеансовый метод connectSDK
*2) как обрабатывать переменную 'ldap'.
*3) ldap.close() I хотите закрыть сеанс после, но этот метод не сработает. Есть ли другой способ?


person Jin Lee    schedule 21.11.2018    source источник
comment
Поместите ldap.close в блок finally или используйте try-with-resources, если LDAPConnection имеет интерфейс AutoCloseable   -  person Scary Wombat    schedule 21.11.2018
comment
@Scary Wombat Как я могу передать LDAPConnection ldap из connectSDK в searchSDK?   -  person Jin Lee    schedule 21.11.2018


Ответы (1)


В вашем коде нет такого метода LDAPConnection ldap = connectSDK(); Поскольку connectSDK(String ip, Integer port, String id, String pw) возвращает LDAPConnection, передайте его как параметр в searchSDK и удалите из него connectSDK().

Измените код как

public static void searchSDK(String filter, LDAPConnection ldap) throws LDAPException {

    // LDAPConnection ldap = connectSDK(); 
....
}

Таким образом, ваш основной будет выглядеть

LDAPConnection ldap = connectSDK("192.168.0.60",389,"*****","******");
//search using a filter 
searchSDK("hotdog", ldap);
person Scary Wombat    schedule 21.11.2018
comment
Спасибо. Как я могу вызвать этот метод в моем основном? searchSDK(хот-дог,?); - person Jin Lee; 21.11.2018