Hello,
I'm testing LSC 2.0rc2 with a group membership synchronization configuration
between an Active Directory source to a OpenLDAP destination. This
configuration runs correctly with release 1.2, but when i import inside lsc.xml
configuration it failed on an Javascript error
java.lang.ClassNotFoundException: sun.org.mozilla.rhino.ScriptableObject.
See attachment for output error and here is the configuration of uniqueMember
attribute :
Could you tell me if i made a mistake inside my lsc.xml ?
<dataset>
<name>uniqueMember</name>
<policy>FORCE</policy>
<forceValues>
<string>
<![CDATA[js:
var dnRoot = "dc=example,dc=com";
var srcMembersNotFoundInDst = new Array();
var dstMembers = new Array();
var dnNoMembers = "uid=no_members,ou=Private," + dnRoot;
var srcMembers = new Array();
if ( srcBean.getDatasetById("member"))
{
srcMembers = srcBean.getDatasetById("member").toArray() ;
for (var i=0; i < srcMembers.length; i++ ) {
try {
var sam = srcLdap.attribute(srcMembers[i],
'sAMAccountName').get(0);
dstMembers.push(ldap.search("ou=People","(uid="+sam+")").get(0) + "," + dnRoot)
}
catch (e) {
srcMembersNotFoundInDst.push( srcMembers[i]);
}
}
if ( srcMembersNotFoundInDst.length > 0 ) srcMembers =
srcMembersNotFoundInDst.slice(0);
srcMembersNotFoundInDst = [];
for (var i=0; i < srcMembers.length; i++ ) {
try {
var cn = srcLdap.attribute(srcMembers[i],
'cn').get(0);
dstMembers.push(ldap.search("ou=Groups","(cn="
+ cn + ")").get(0) + "," + dnRoot)
}
catch (e) {
srcMembersNotFoundInDst[i]=srcMembers[i];
}
}
if ( dstMembers.length == 0) dstMembers.push( dnNoMembers);
dstMembers
}
else
{
dnNoMembers
}
]]>
</string>
</forceValues>
</dataset>
The error seems to be the javascript array which is given as value instead of
been taken as an multi valued attribute :
..
uniqueMember: sun.org.mozilla.javascript.internal.NativeArray@78aa80
...
It doesn't appear if i change script with "dstMembers[0]" or "dstMembers[1]"
result. In that case it only synchronize the first member or second member of
the Active Directory group.
Is there a way to increase Javascript debugging output ?
Thanks,
--
Frederic Poisson
May 02 11:32:40 - DEBUG - Loading XML configuration from:
/usr/products/lsc-2.0rc2/etc/lsc.xml
May 02 11:32:41 - INFO - Logging configuration successfully loaded from
/usr/products/lsc-2.0rc2/etc/logback.xml
May 02 11:32:41 - INFO - LSC configuration successfully loaded from
/usr/products/lsc-2.0rc2/etc/
May 02 11:32:41 - INFO - Connecting to LDAP server
ldap://192.168.200.167:38956/dc=example,dc=com as cn=root DN,dc=example,dc=com
May 02 11:32:41 - INFO - Connecting to LDAP server
ldap://192.168.200.171:389/DC=smtp1,DC=local as
CN=Administrator,CN=Users,DC=smtp1,DC=local
May 02 11:32:41 - INFO - Starting sync for Groups
java.lang.ClassNotFoundException: sun.org.mozilla.rhino.ScriptableObject
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at
org.lsc.utils.JScriptEvaluator.convertJsToJava(JScriptEvaluator.java:225)
at
org.lsc.utils.JScriptEvaluator.evalToStringList(JScriptEvaluator.java:119)
at
org.lsc.utils.ScriptingEvaluator.evalToStringList(ScriptingEvaluator.java:111)
at org.lsc.beans.BeanComparator.getValuesToSet(BeanComparator.java:590)
at
org.lsc.beans.BeanComparator.getUpdatedObject(BeanComparator.java:292)
at
org.lsc.beans.BeanComparator.calculateModifications(BeanComparator.java:174)
at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:709)
at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:633)
at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:604)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
May 02 11:32:41 - ERROR - Error while adding entry
cn=groupe-l3,ou=Groups,dc=example,dc=com in directory
:javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21 -
uniqueMember: value #0 invalid per syntax]; remaining name
'cn=groupe-l3,ou=Groups'
May 02 11:32:41 - ERROR - Error while synchronizing ID
cn=groupe-l3,ou=Groups,dc=example,dc=com: java.lang.Exception: Technical
problem while applying modifications to the destination
dn: cn=groupe-l3,ou=Groups,dc=example,dc=com
changetype: add
mailRoutingAddress: [email protected]
cn: groupe-l3
description: Groupe contenant les users L3
uSNCreated: 32988
objectClass: adobject
objectClass: inetLocalMailRecipient
objectClass: groupOfUniqueNames
objectClass: top
mailLocalAddress: [email protected]
mailLocalAddress: [email protected]
uniqueMember: sun.org.mozilla.javascript.internal.NativeArray@78aa80
May 02 11:32:41 - ERROR - All entries: 2, to modify entries: 1, modified
entries: 0, errors: 1
May 02 11:32:41 - INFO - Starting clean for Groups
May 02 11:32:41 - INFO - All entries: 1, to modify entries: 0, modified
entries: 0, errors: 0_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org
lsc-users mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-users