external agents needs bootdelegation update in Jahia 8

Question

When trying to use external agents like appDynamics to check the health of the environment. The compatibility must be checked.

Answer

It is possible that you run in NoClassDefFound errors because the OSGI classpath doesn't load the right classes.

The correct solution is to update the OSGI bootdelegation. Since Jahia 8 the bootdelegation can be found in  \digital-factory-data\karaf\etc\custom.properties

 

E.g. For the AppDynamics agent. You will run in startup in follow NoClassDefFound:

Caused by: java.lang.NoClassDefFoundError: com/singularity/ee/agent/appagent/entrypoint/bciengine/FastMethodInterceptorDelegatorBoot 

But it would help to add "com.singularity.*" to the bootdelegation, so the change would look like:

org.osgi.framework.bootdelegation=\
  com.sun.*, \
  javax.annotation, \
  javax.transaction, \
  javax.transaction.*, \
  javax.xml.crypto, \
  javax.xml.crypto.*, \
  jdk.nashorn.*, \
  sun.*, \
  com.singularity.*, \
  jdk.internal.reflect, \
  jdk.internal.reflect.*, \
  org.apache.karaf.jaas.boot, \
  org.apache.karaf.jaas.boot.principal,\
  __redirected, \
  org.apache.tomcat, \
  org.apache.tomcat.util.scan, \
  org.apache.tomcat.util.compat, \
  javax.net.ssl, \
  com.yourkit.*, \
  eu.plumbr.*, \
  eu.plumbr.agent.instrumentation.*, \
  eu.plumbr.agent.*, \
  org.jahia.services.modulemanager, \
  org.jahia.services.modulemanager.spi.impl, \
  org.jahia.osgi, \
  org.jahia.data.templates, \
  org.bouncycastle.crypto, \
  org.bouncycastle.crypto.prng, \
  ${org.osgi.framework.bootdelegation.extra} 

On the next restart the issue should be solved. 

 

For other agents, other packages must be added to the bootdelegation, it depends on the agent. If you need help, contact the jahia support.