We are using WebLogic 8.1.6 on Solaris. We have successfully instrumented the WebLogic instance but when some T3 client code is run the transactions are not processed and the following error is thrown. This error is only visible from the client side and not the server.
java.lang.NoClassDefFoundError: com/sitraka/pas/agent/plugin/instrumentor/method/JdbcDriverInstrumentor$JdbcImplementation
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:480)
This problem can be caused by the serialization of an instrumented object through RMI. The problem happens when a non-instrumented client is trying to use some service on an instrumented application server.
WORKAROUND 1:
You can configure the Java EE agent to use an alternate method of instrumentation for classes that are serialized between an instrumented server and an uninstrumented server. For those classes, specify the class name in the SafeModeClasses ClassList in the instrumentation.config property file.
For example: SafeModeClasses = ClassList (
include "com.foo.bar.MyClass",
);
Note: Because safe mode instrumentation is less efficient and requires more memory than normal instrumentation, only implement the above workaround for those classes experiencing the problem.
WORKAROUND 2: Instrument the client. This may be easier to implement than workaround 1 if the classes being invoked by the client aren't known.
The Foglight JavaEE Installation guide also discusses this issue under the "The Java EE agent indirectly causes a NoClassDefException on an uninstrumented server during an RMI call" section under the "Configuration FAQ and Troubleshooting" section (pages 87-89 of the V5.5.8 JavaEE Installtion guide).
© 2021 Quest Software Inc. ALL RIGHTS RESERVED. Feedback Terms of Use Privacy