У меня проблема с массивом, возвращаемым пустым, и я не уверен, где проблема.
При щелчке по предоставленной ссылке с именем человека, используя angularjs, имя, по которому щелкнули, отправляется в качестве параметра в класс Java с именем APPservlet.java, в котором затем выполняется этот код.
case "personName": {
try {
ldapAuthenticationServiceAccess.getADPersonInfo(session.getAttribute("personName").toString());
} catch (NullPointerException e) {
e.printStackTrace();
log.error(e);
}
jsonObject = new JSONObject();
jsonArray = new JSONArray();
tmpJSONObject = new JSONObject();
try {
PersonADInfo info = new PersonADInfo();
tmpJSONObject = new JSONObject();
tmpJSONObject.put("name", info.getName());
tmpJSONObject.put("email", info.getEmail());
tmpJSONObject.put("sector", info.getSector());
tmpJSONObject.put("workplace", info.getWorkplace());
jsonArray.put(tmpJSONObject);
jsonObject.put("person", jsonArray);
} catch (JSONException e) {
e.printStackTrace();
e.getMessage();
log.error(e);
}
writer.println(jsonObject.toString());
}
break;
Когда вызывается этот класс java, внутри него вызывается метод getADPersonInfo (String), который находится внутри класса java LDAPAuthenticationServiceAccess.java, и его целью является подключение к LDAP, а затем кобъявление, чтобы получить информацию о пользователе.Затем эта информация передается в класс PersonADInfo.java, который содержит методы получения и установки.Вот код:
public void getADPersonInfo(String username) {
String returnedAttributePerson[] = {"distinguishedName", "givenName" , "sAMAccountName" };
String searchFilterPerson = "(&(objectClass=user)(displayName=" + username + "))";
String searchBasePerson = "DC=Something,DC=local";
SearchControls searchCtlsPerson = new SearchControls();
searchCtlsPerson.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchCtlsPerson.setReturningAttributes(returnedAttributePerson);
LdapContext ctxGCPERSON = null;
try {
ctxGCPERSON = new InitialLdapContext(env, null);
NamingEnumeration<?> answerPERSON = ctxGCPERSON.search(searchBasePerson, searchFilterPerson,
searchCtlsPerson);
while (answerPERSON.hasMoreElements()) {
SearchResult srPERSON = (SearchResult) answerPERSON.next();
Attributes attrsPERSON = srPERSON.getAttributes();
PersonADInfo personADInfo = new PersonADInfo();
personADInfo.setName(username);
personADInfo.setEmail(attrsPERSON.get("distinguishedName").get().toString());
personADInfo.setSector(attrsPERSON.get("givenName").get().toString());
personADInfo.setWorkplace(attrsPERSON.get("sAMAccountName").get().toString());
}
} catch (NamingException e) {
log.error(e);
e.printStackTrace();
}
}
Переменные, которые устанавливаются, предназначены только для целей тестирования и установлены только для того, чтобы увидеть, вернется ли что-нибудь.Пока единственное, что возвращается, это пустой массив, и я не уверен, в чем проблема, этот вид проекта для меня первый, поэтому я прошу вашего понимания, любая помощь приветствуется.Заранее спасибо!
Примечание: этот проект использует SSO, и поэтому каждый раз, когда я его тестирую, мне нужно загрузить файл war на удаленный сервер Tomcat.