Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Use JMX Bean from sourcecode org.apache.jackrabbit.oak: External Identity Synchronization Management

Avatar

Level 2

Hi

In CQ 5.5 we connected to the ldap jmx bean via: 

javax.management.MBeanServer.getClassLoaderFor("com.adobe.granite.ldap:host=localhost,port=10389,type=Tools")

e.g. for the operation syncAllExternalUsers(), which worked fine.

Now with AEM 6.1 I try to use the new JMX Bean via:

javax.management.MBeanServer.getClassLoaderFor("org.apache.jackrabbit.oak:handler=mySyncHandler,idp=ldap")

but I get the following exception:

javax.management.InstanceNotFoundException:org.apache.jackrabbit.oak.spi.security.authentication.external.impl.jmx.SynchronizationMBean:handler=mySyncHandler,idp=ldap

If I run the syncAllExternalUsers() manually via AEM Web Console, the function works fine. I also tried to connect to the bean with org.apache.jackrabbit.oak.spi.security.authentication.external.impl.jmx.SynchronizationMBean:handler=mySyncHandler,idp=ldap .

Does anyone have an idea, how I an call the new bean in AEM 6.1?

Thanks alot

Reto

1 Accepted Solution

Avatar

Correct answer by
Level 3

Try this:

connect to your cq jmx port via jconsole. (jconsole is located at $jdk_home/bin/jconsole). open jconsole. connect to your CQ instance from the available process. then in the Mbeans tab see if your MBean is registered there. it will also help determine if anything is wrong with the objectname string. whatever objectname is listed there is what should be provided in the code.

this should look something like that in the attached shreenshot.

View solution in original post

12 Replies

Avatar

Level 10

Have you configured the properties for  'Apache Jackrabbit Oak Default Sync Handler' in the configMgr ?

can you give the steps you have followed to configure the ldap

Avatar

Employee

Hi,

Why do you need the ClassLoader? I would suggest just calling MBeanServer.invoke().

Regards,

Justin

Avatar

Level 2

Hi justin_at_adobe

I also tried it with MBeanServer.invoke() but I get the same exception.

Best regards,

Reto

Avatar

Level 2

Hi bsloki

Thank you for your quick response. Yes, I configured the the properties for 'Apache Jackrabbit Oak Default Sync Handler' in the configMgr, otherwise none of the LDAP function would work. I followed this instruction for the configuration: http://docs.adobe.com/docs/en/aem/6-1/administer/security/ldap-config.html. In fact that the LDAP function works fine, I think I'm doing something wrong in calling the JMX bean.

Avatar

Level 10

are you using the default Handler or a custom handler ? if So can you share your handler ..

Avatar

Level 10

Interesting !! I did setup locally and it is working for me.. Do you mind sharing the screenshot of your configurations ?

Avatar

Level 2

How does your MBeanServer.invoke() look like? My configuration is attached.

Avatar

Level 3

try this (not sure if this would work) -

javax.management.MBeanServer.getClassLoaderFor(new ObjectName("org.apache.jackrabbit.oak:handler=mySyncHandler,idp=ldap"));

Avatar

Level 2

This is what I'm already doing, without luck:

final ObjectName targetObjectName = new ObjectName(ldapJmxObjectName);final ClassLoader tmpClassLoader = mBeanServer.getClassLoaderFor(targetObjectName);

Avatar

Correct answer by
Level 3

Try this:

connect to your cq jmx port via jconsole. (jconsole is located at $jdk_home/bin/jconsole). open jconsole. connect to your CQ instance from the available process. then in the Mbeans tab see if your MBean is registered there. it will also help determine if anything is wrong with the objectname string. whatever objectname is listed there is what should be provided in the code.

this should look something like that in the attached shreenshot.

Avatar

Level 2

Hi awadheshv

Thanks alot for your hint with the jconsole. This solved my problem. I figured out that my objectname was wrong. I have to use the following objectname: org.apache.jackrabbit.oak:name=External Identity Synchronization Management,handler="mySyncHandler",type=UserManagement,idp="ldap"