2013/5/13 Olaf Pueschel <[email protected]>:
> Hi lsc community!
>
> I would like to switch our lsc installation (DB to LDAP, c.a. 15000 entries)
> from synchronous to asynchronous mode.
> For testing I wanted to try to sync just the userpassword field from the
> database (Oracle) to LDAP (OpenDJ). I am using lsc 2.0.2.
>
> First I created and tested a syncronous configuration. Then I modified the
> lsc.xml config to include
>
> <requestNameForNextId>getInetOrgPersonNext</requestNameForNextId>
>
> and added
>
> <select id="getInetOrgPersonNext" resultClass="java.util.HashMap">
>                 SELECT cn
>                 FROM ldap_sync
>                 WHERE id = (SELECT MAX(id) FROM ldap_sync)
> </select>
>
> to my InetOrgPerson.xml file (cn being my pivot attribute). The "ldap_sync"
> view contains the "cn" values for all the changed records in the database.
>
> There is no complete example for async mode in the documentation, So I just
> guessed that "requestNameForNextId" should return the value of the
> pivot attribute for the next changed record. Obviously i'm missing out
> something, because it does not work. I tried several modifications but no
> luck.
>
> ******************
> If anyone can post a full example how to use asynchronous mode with a jdbc
> source and ldap destination, that would be great
> *****************
>
> I tried some more...
>
> Switched to a static select for testing
>
> <select id="getInetOrgPersonNext" resultClass="java.util.HashMap">
>                 SELECT 'puescheo' AS cn FROM dual
> </select>
>
> but still I get the same errors:
>
> $ bin/lsc-gdldaptestpw -a all -t 1
> May 13 17:46:31 - DEBUG - Loading XML configuration from:
> /home/puescheo/lsc2/gdldaptestpw/bin/../etc/lsc.xml
> May 13 17:46:32 - INFO  - Reflections took 407 ms to scan 1 urls, producing
> 60 keys and 226 values
> May 13 17:46:32 - DEBUG - Importing XML schema file:
> schemas/lsc-core-2.0.xsd
> May 13 17:46:32 - INFO  - Logging configuration successfully loaded from
> /home/puescheo/lsc2/gdldaptestpw/bin/../etc/logback.xml
> May 13 17:46:32 - INFO  - LSC configuration successfully loaded from
> /home/puescheo/lsc2/gdldaptestpw/bin/../etc/
> May 13 17:46:32 - INFO  - Connecting to LDAP server
> ldap://gdldaptest1.accounts.intern:389/dc=gi-de,dc=com as cn=Directory
> Manager
> May 13 17:46:32 - DEBUG - Reading sql-map-config.xml from
> file:/home/puescheo/lsc2/gdldaptestpw/bin/../etc/sql-map-config.xml
> May 13 17:46:33 - INFO  - Starting async for PasswordSyncTask
> May 13 17:46:33 - DEBUG - Asynchronous synchronize PasswordSyncTask
> May 13 17:46:33 - ERROR - Error while synchronizing ID puescheo:
> java.util.NoSuchElementException
> May 13 17:46:33 - DEBUG - java.util.NoSuchElementException
> java.util.NoSuchElementException: null
>         at java.util.HashMap$HashIterator.nextEntry(HashMap.java:897)
> ~[na:1.7.0_17]
>         at java.util.HashMap$KeyIterator.next(HashMap.java:928)
> ~[na:1.7.0_17]
>         at org.lsc.LscDatasets.getStringValueAttribute(LscDatasets.java:81)
> ~[lsc-core-2.0.2.jar:na]
>         at
> org.lsc.jndi.AbstractSimpleJndiService.get(AbstractSimpleJndiService.java:247)
> ~[lsc-core-2.0.2.jar:na]
>         at
> org.lsc.jndi.SimpleJndiDstService.getBean(SimpleJndiDstService.java:122)
> ~[lsc-core-2.0.2.jar:na]
>         at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:714)
> [lsc-core-2.0.2.jar:na]
>         at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:673)
> [lsc-core-2.0.2.jar:na]
>         at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:652)
> [lsc-core-2.0.2.jar:na]
>         at java.lang.Thread.run(Thread.java:722) [na:1.7.0_17]
>
> The lsc.xml used is as follows:
>
> <?xml version="1.0" ?>
> <lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.0.xsd"; revision="0">
>   <connections>
>     <databaseConnection>
>       <name>edatadb-src-conn</name>
>       <url>jdbc:oracle:thin:@****************************</url>
>       <username>**********</username>
>       <password>********</password>
>       <driver>oracle.jdbc.driver.OracleDriver</driver>
>     </databaseConnection>
>
>     <ldapConnection>
>       <name>gdldap-dst-conn</name>
>       <url>ldap://******************/dc=gi-de,dc=com</url>
>       <username>cn=Directory Manager</username>
>       <password>**************</password>
>       <authentication>SIMPLE</authentication>
>       <referral>IGNORE</referral>
>       <derefAliases>NEVER</derefAliases>
>       <version>VERSION_3</version>
>       <pageSize>500</pageSize>
>       <factory>com.sun.jndi.ldap.LdapCtxFactory</factory>
>     </ldapConnection>
>   </connections>
>
>   <tasks>
>     <task>
>       <name>PasswordSyncTask</name>
>       <bean>org.lsc.beans.SimpleBean</bean>
>       <databaseSourceService>
>         <name>pw-edatadb-src-service</name>
>         <connection reference="edatadb-src-conn" />
>         <requestNameForList>getInetOrgPersonList</requestNameForList>
>         <requestNameForObject>getInetOrgPerson</requestNameForObject>
>         <requestNameForNextId>getInetOrgPersonNext</requestNameForNextId>
>         <requestNameForClean>getInetOrgPersonClean</requestNameForClean>
>       </databaseSourceService>
>       <ldapDestinationService>
>         <name>pw-gdldap-dst-service</name>
>         <connection reference="gdldap-dst-conn" />
>         <baseDn>ou=People,dc=gi-de,dc=com</baseDn>
>         <pivotAttributes>
>           <string>cn</string>
>         </pivotAttributes>
>         <fetchedAttributes>
>           <string>userpassword</string>
>         </fetchedAttributes>
>         <getAllFilter>(objectClass=inetorgperson)</getAllFilter>
>
> <getOneFilter>(&amp;(objectClass=inetorgperson)(cn={cn}))</getOneFilter>
>       </ldapDestinationService>
>       <propertiesBasedSyncOptions>
>         <mainIdentifier>"cn=" + srcBean.getDatasetFirstValueById("cn") +
> ",ou=" + srcBean.getDatasetFirstValueById("o") +
> ",ou=People,dc=gi-de,dc=com"</mainIdentifier>
>         <defaultDelimiter>;</defaultDelimiter>
>         <defaultPolicy>FORCE</defaultPolicy>
>         <conditions>
>                 <create>false</create>
>                 <update>true</update>
>                 <delete>false</delete>
>                 <changeId>false</changeId>
>         </conditions>
>         <dataset>
>           <name>userpassword</name>
>           <policy>FORCE</policy>
>           <defaultValues></defaultValues>
>           <forceValues></forceValues>
>           <createValues></createValues>
>         </dataset>
>       </propertiesBasedSyncOptions>
>     </task>
>   </tasks>
>   <security>
>     <encryption>
>       <keyfile>etc/lsc.key</keyfile>
>       <algorithm>AES</algorithm>
>       <strength>128</strength>
>     </encryption>
>   </security>
> </lsc>
>
> I'll be very happy with any help or advice!

Could you send us your complete iBastis configuration file?

Thanks,

Clément.
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-users mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-users

Reply via email to