Custom Java code in a user-defined node or a JavaCompute node can cause the IBM Integration Bus (IIB) or WebSphere Message Broker (WMB) DataFlowEngine process to hang. Debugging these issues can be challenging because the DataFlowEngine process does not respond to configuration requests after it hangs. Forcing DataFlowEngine to generate a Java™ core dump for debugging problems may be helpful in resolving these kind of problems.
Diagnosing the problem
Java core dumps contain information about all of the Java threads that are running in a process, These can be used to diagnose problems such as lock conditions or non-terminating loops in a custom Java code.
Resolving the problem
To obtain diagnostic information by generating a Java core dump from a DataFlowEngine process, complete the following steps:
1. Create a message flow that contains an MQInput node, a JavaCompute node and an MQOutput node.
2. In your JavaCompute node, call the com.ibm.jvm.Dump.JavaDump() method.
3. Deploy your message flow to the execution group that contains the problem.
4. Recreate the conditions that result in the unresponsive DataFlowEngine process.
5. Examine the Java core dump to determine problems in your custom Java code
6. If the problem cannot be resolved, open a PMR and send the Java core dump to support for analysis.
This method is not supported on Solaris or HP platforms which do not use the IBM JRE, because they do not have access to the com.ibm.jvm.Dump.JavaDump() method.
Note that the collection of Java core dumps is an invasive activity and negatively impacts other processes that are running in the execution group. Use this technique only where necessary for debugging, and ensure that all message flows that contain the com.ibm.jvm.Dump.JavaDump() method are removed from your production Brokers after the problem has been diagnosed.
|Business Integration||IBM Integration Bus||9.0||All Editions|
WMB MB WebSphere Message Broker MQ Integrator WBIMB WBI-MB MQSI WMQI