[frs-357] FusionReactor cannot find AppDynamics classes when both are installed

Problem

When running AppDynamics agent and FusionReactor agent in the same java process, FusionReactor will not work as it cannot find the correct classes.

Exceptions like the following occur:

java.lang.ClassNotFoundException: com.singularity.ee.agent.appagent.entrypoint.bciengine.MethodExecutionEnvironment not found by org.apache.felix.http.jetty [8]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1550)
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1988)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.eclipse.jetty.server.Response.sendError(Response.java)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:538)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:367)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:745)

Solution

  1. Open the fusionreactor.jar in a zip program and extract the following file
    • /com.intergral.fusionreactor.resources/osgi/fr-osgi.conf
  2. Place this file into the <instancedir>/osgi/ directory
  3. Edit the file
  4. Append the following to the line that starts with org.osgi.framework.bootdelegation
    • ,com.appdynamics.*,com.singularity.*
  5. Save the file and restart your application server.

Example of the change

The fr-osgi.conf line should look something like this

org.osgi.framework.bootdelegation=jrunx.kernel,jrunx.logger,org.netbeans.lib.profiler,org.netbeans.lib.profiler.*,com.appdynamics.*,com.singularity.*

Issue Details

Type: Technote
Issue Number: FRS-357
Components: Plugins + OSGi
Environment:
Resolution: Fixed
Last Updated: 10/Jul/15 12:28 PM
Affects Version: 5.2.7
Fixed Version: 6.0.0
Server:
Platform:
Related Issues:

Comments are closed.