Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring & LDAP / 1 сообщений из 1, страница 1 из 1
08.06.2007, 18:40:37
    #34585008
_Flint_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring & LDAP
Пытаюсь работать с помощью Spring с LDAP-сервером, получается получить список объектов, получает найти один объект, не получается добавить. Вот класс:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
 package  com.tfnetwork.admin.user.dao.ldap;
 import  com.tfnetwork.admin.user.dao.IUserDAO;
 import  com.tfnetwork.admin.user.User;
 import  java.util.List;
 import  java.util.HashMap;
 import  java.util.Set;
 import  org.springframework.ldap.LdapTemplate;
 import  org.springframework.ldap.ContextMapper;
 import  org.springframework.ldap.EntryNotFoundException;
 import  org.springframework.ldap.support.DirContextAdapter;
 import  org.springframework.ldap.support.DistinguishedName;
 import  org.springframework.ldap.support.filter.EqualsFilter;
 import  org.springframework.ldap.support.filter.AndFilter;
 import  javax.naming.Name;
 import  javax.naming.InvalidNameException;

 public   class  LDAPUserDAO  implements  IUserDAO {

     public   static   final  String LDAP_CLASS = "inetOrgPerson";

     private  LdapTemplate template;
     private  UserContextMapper mapper;

     public   void  setLdapTemplate(LdapTemplate template) {
         this .template = template;
    }

     public   void  setContextMapper(ContextMapper mapper) {
         this .mapper = (UserContextMapper) mapper;
    }

     public   void  create(User user) {
        user.setId(user.getFirstName());
        DirContextAdapter context =  new  DirContextAdapter();
        mapper.mapToContext(user, context);
         try  {
           Name dn = buildDN(user);
           template.bind(dn, context,  null );
        }  catch  (Exception e) {
            System.out.println("Binding error: "+e.getMessage());
        }
    }

     public   void  update(User user) {
        template.rebind(buildDN(user),  null , mapper.buildAttributes(user));
    }

     public  User load(Object id) {
        User result =  null ;

         try  {
            result = (User) template.lookup(buildDN(id), mapper);
            System.out.println("Loaded User id="+id);
        }  catch  (EntryNotFoundException nfe) {
            System.out.println("User with CN=" + id + " is not found.");
        }
         return  result;
    }

     public  List find(HashMap criteria) {
        AndFilter filter =  new  AndFilter();
        filter.and( new  EqualsFilter("objectclass", LDAP_CLASS));
        Set<String> filterSet = criteria.keySet();

         for  (String key : filterSet) {
            String value = (String) criteria.get(key);

             if  (value !=  null  && !value.trim().equals("")) {
                filter.and( new  EqualsFilter(key, value));
            }
        }
         return  template.search(DistinguishedName.EMPTY_PATH, filter.encode(), mapper);
    }


     protected  Name buildDN(User user) {
         return  buildDN(user.getId());
    }

     protected  Name buildDN(Object id) {
        DistinguishedName dn =  new  DistinguishedName();
        dn.add("cn", (String) id);
         return  dn;
    }
}

Выводит ошибку:
javax.naming.NameNotFoundException: [LDAP: error code 32 - Родительская запись не найдена в иерархии.]; remaining name 'cn=Test'

Если же последнюю процедуру переделать следующим образом:
Код: plaintext
1.
2.
3.
4.
     protected  Name buildDN(Object id) {
        DistinguishedName dn =  new  DistinguishedName(BASE_DN);
        dn.add("cn", (String) id);
         return  dn;
    }
Где BASE_DN это базовы DN подключения, в частности:
cn=Users,dc=companyname,dc=companydomen
С данным DN в стороннем приложении по управлению LDAP объект создается, класс же возвращает:
javax.naming.NameNotFoundException: [LDAP: error code 32 - Родительская запись не найдена в иерархии.]; remaining name 'cn=hh, cn=Users, dc=softclub, dc=scx'

Помогите пожалуйста разобраться
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring & LDAP / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]