Part I Development Tasks and Tools
1. Setting Up a Development Environment
To Set the Server to Automatically Start Up in Debug Mode
Generating a Stack Trace for Debugging
GlassFish Server Message Queue Debugging
Part II Developing Applications and Application Components
6. Using the Java Persistence API
7. Developing Web Applications
8. Using Enterprise JavaBeans Technology
9. Using Container-Managed Persistence
12. Developing Lifecycle Listeners
13. Developing OSGi-enabled Java EE Applications
Part III Using Services and APIs
14. Using the JDBC API for Database Access
15. Using the Transaction Service
16. Using the Java Naming and Directory Interface
You can use a profiler to perform remote profiling on the GlassFish Server to discover bottlenecks in server-side performance. This section describes how to configure profilers for use with GlassFish Server.
The following topics are addressed here:
Information about comprehensive monitoring and management support in the Java 2 Platform, Standard Edition (J2SE platform) is available at http://download.oracle.com/javase/6/docs/technotes/guides/management/index.html.
For information on how to use the NetBeans profiler, see http://profiler.netbeans.org/index.html.
The Heap and CPU Profiling Agent (HPROF) is a simple profiler agent shipped with the Java 2 SDK. It is a dynamically linked library that interacts with the Java Virtual Machine Profiler Interface (JVMPI) and writes out profiling information either to a file or to a socket in ASCII or binary format.
HPROF can monitor CPU usage, heap allocation statistics, and contention profiles. In addition, it can also report complete heap dumps and states of all the monitors and threads in the Java virtual machine. For more details on the HPROF profiler, see the technical article at http://java.sun.com/developer/technicalArticles/Programming/HPROF.html.
After HPROF is enabled using the following instructions, its libraries are loaded into the server process.
Profiler Name – hprof
Profiler Enabled – true
Classpath – (leave blank)
JVM Option – Select Add, type the HPROF JVM option in the Value field, then check its box. The syntax of the HPROF JVM option is as follows:
-Xrunhprof[:help]|[:param=value,param2=value2, ...]
Here is an example of params you can use:
-Xrunhprof:file=log.txt,thread=y,depth=3
The file parameter determines where the stack dump is written.
Using help lists parameters that can be passed to HPROF. The output is as follows:
Hprof usage: -Xrunhprof[:help]|[:<option>=<value>, ...] Option Name and Value Description Default --------------------- ----------- ------- heap=dump|sites|all heap profiling all cpu=samples|old CPU usage off format=a|b ascii or binary output a file=<file> write data to file java.hprof (.txt for ascii) net=<host>:<port> send data over a socket write to file depth=<size> stack trace depth 4 cutoff=<value> output cutoff point 0.0001 lineno=y|n line number in traces? y thread=y|n thread in traces? n doe=y|n dump on exit? y
Note - Do not use help in the JVM Option field. This parameter prints text to the standard output and then exits.
The help output refers to the parameters as options, but they are not the same thing as JVM options.
This writes an HPROF stack dump to the file you specified using the file HPROF parameter.
Information about JProbe from Sitraka is available at http://www.quest.com/jprobe/.
After JProbe is installed using the following instructions, its libraries are loaded into the server process.
For details, see the JProbe documentation.
Profiler Name – jprobe
Profiler Enabled – true
Classpath – (leave blank)
JVM Option – For each of these options, select Add, type the option in the Value field, then check its box
-Xbootclasspath/p:JProbe-dir/profiler/jpagent.jar
-Xrunjprobeagent
-Xnoclassgc
Note - If any of the configuration options are missing or incorrect, the profiler might experience problems that affect the performance of the GlassFish Server.
When the server starts up with this configuration, you can attach the profiler.
JPROBE_ARGS_0=-jp_input=JPL-file-path
See Step 6 for instructions on how to create the JPL file.
Target Server – other-server
Server home Directory – as-install
Server class File – com.sun.enterprise.server.J2EERunner
Working Directory – as-install
Classpath – as-install/lib/appserv-rt.jar
Source File Path – source-code-dir (in case you want to get the line level details)
Server class arguments – (optional)
Main Package – com.sun.enterprise.server
You must also set VM, Attach, and Coverage tabs appropriately. For further details, see the JProbe documentation. After you have created the JPL file, use this an input to JPROBE_ARGS_0.