Integrating Profiler with Various J2EE Web/Application Servers

Integrating Profiler with Various J2EE Web/Application Servers

This section describes how to integrate the Profiler with a number of popular J2EE Web/Application servers. Please check the Supported Java VMs section first - it provides the important information on JVMs that the Profiler supports. The instructions for integration are slightly different depending on the JVM (either bundled customized JDK 1.4.2 or the standard JDK 5/6 VM) on which you run your Web/Application server.

Used Symbols

The following symbols are used throughout this section:

  • %NB_USERDIR%, $NB_USERDIR: path to your NetBeans IDE user directory (you can obtain it by choosing Help -> About -> Details from the main IDE menu)

  • %AS_HOME%, $AS_HOME: a directory where the Web/Application Server has been installed

  • %MODJDK_HOME%, $MODJDK_HOME: path to the customized Profiler JDK, typically %NB_USERDIR%/modules/profiler-ea-vm. You can obtain this path by invoking Profile -> Help -> About Profiler... dialog in the IDE.

  • %PROFILER_LIBS%, $PROFILER_LIBS: directory containing the profiler agent native libraries, typically %NB_INSTALLDIR%/profiler1/lib

  • %AGENT_PORT%, $AGENT_PORT%: port used for communication with the Profiler

Note for Linux and Solaris users: in configuration examples the "setenv" keyword is used to set value of environment variables. Depending on your shell, you may need to use "export" instead.

J2EE Web/Application Servers supported by the Profiler

This section documents how to integrate the Profiler with the following Web/Application servers:

The Profiler can also be easily integrated with other Web/Application servers. Generic configuration steps are described below.

Tomcat 4.x Integration Steps

Attach to Running Server (only with bundled customized JDK 1.4.2):

Windows:

  1. Create a copy of %AS_HOME%\bin\catalina.bat
  2. Rename the copy to catalina_nbprofiler.bat.
  3. At the beginning of catalina_nbprofiler.bat, add the following line just after the help text:
    set JAVA_HOME=%MODJDK_HOME%

Linux, Solaris:

  1. Create a copy of $AS_HOME/bin/catalina.sh
  2. Rename the copy to catalina_nbprofiler.sh.
  3. At the beginning of catalina_nbprofiler.sh, add the following line just after the help text:
    setenv JAVA_HOME=$MODJDK_HOME

If you attaching the Profiler to the running Tomcat bundled with NetBeans, use the following working directory: netbeans-install-dir/enterprise3/apache-tomcat-5.5.17/bin.

Attach on Server Startup (Direct Attachment):

Windows:

  1. Create a copy of %AS_HOME%\bin\catalina.bat
  2. Rename the copy to catalina_nbprofiler.bat.
  3. For bundled JDK 1.4.2 only: at the beginning of catalina_nbprofiler.bat, add the following lines just after the help text:
    set JAVA_HOME=%MODJDK_HOME%
    set PATH=%PROFILER_LIBS%\deployed\jdk142\windows;%PATH%
  4. Right after the label :execCmd add the following single line:
    For bundled JDK 1.4.2:
    set JAVA_OPTS=-Xrunprofilerinterface:%PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTS%
    For JDK 5/6:
    set JAVA_OPTS=-agentpath:%PROFILER_LIBS%\deployed\jdk15\windows\profilerinterface.dll= %PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTS%

Linux, Solaris:

  1. Create a copy of $AS_HOME/bin/catalina.sh
  2. Rename the copy to catalina_nbprofiler.sh.
  3. For bundled JDK 1.4.2 only: at the beginning of catalina_nbprofiler.sh, add the following lines just after the help text:
    setenv JAVA_HOME=$MODJDK_HOME
    setenv LD_LIBRARY_PATH=$PROFILER_LIBS/deployed/jdk142/{OS}:$LD_LIBRARY_PATH
  4. Next to these lines, add the following single line
    For bundled JDK 1.4.2:
    setenv JAVA_OPTS=-Xrunprofilerinterface:$PROFILER_LIBS,$AGENT_PORT $JAVA_OPTS
    For JDK 5/6:
    setenv JAVA_OPTS=-agentpath:$PROFILER_LIBS/deployed/jdk15/{OS}/libprofilerinterface.so= $PROFILER_LIBS,$AGENT_PORT $JAVA_OPTS

    In this case, {OS} stands for your operating system type. Possible choices are linux, solaris-i386 and solaris-sparc.

Once you have made the above changes, you can profile applications running on the server using the Attach method.

Important Notes:

Use the modified catalina_nbprofiler.bat or catalina_nbprofiler.sh to start Tomcat. If you use startup.bat or startup.sh for starting Tomcat, this needs to be modified to use either catalina_nbprofiler.bat or catalina_nbprofiler.sh.

Tomcat 5.x Integration Steps


Integration instructions for Tomcat 5.x are the same as for Tomcat 4.x.

However, Tomcat 5.5 requires JDK 5.0 to run. If you want to use the bundled Profiler's customized JDK 1.4.2, you have to download and install the compatibility pack from the Tomcat download page to be able to profile it.

Sun Java System Application Server 7 Integration Steps

Attach to Running Server (only with bundled customized JDK 1.4.2):

  1. Locate the server.xml configuration file of your server:
    • %AS_HOME%\domains\{YOUR_DOMAIN}\{YOUR_SERVER}\config\server.xml (Windows)
    • $AS_HOME/domains/{YOUR_DOMAIN}/{YOUR_SERVER}/config/server.xml (Linux, Solaris)

    {YOUR_DOMAIN} stands for a concrete domain, typically "domain".
    {YOUR_SERVER} stands for a concrete server, typically "server".

  2. In this file, find the <java-config> xml element and change its "java-home" attribute as follows:
    <java-config java-home="%MODJDK_HOME%" ...>

Correct JVM pid.The Sun Java System Application Server is designed so that several JVMs per each server domain/virtual server are active when it runs. However, only one JVM per domain runs the real Application Server code and Web/EJB applications. You need to locate the PID for this particular JVM, which is not immediately obvious.

To locate the PID of the Application Server code JVM (note that this method works only on UNIX):

  1. While your SJSAS is running, go to your server instance logs directory (e.g. SUN_AS_HOME/domains/domain1/server1/logs) and locate the file called pid. This text file contains the PID of the "watchdog" process for your server instance. Let's call this PID prime_pid.
  2. Invoke the following UNIX command:

    ptree prime_pid

    This produces output similar to the following:

    5302  ./appservd-wdog -r /home/johnsmith/app-servers/sun/appserver7 -d /home/dmi
    5303  appservd -r /home/johnsmith/app-servers/sun/appserver7 -d /home/johnsmith
    5304  appservd -r /home/johnsmith/app-servers/sun/appserver7 -d /home/johnsmith
    5306  /bin/sh /home/johnsmith/app-servers/sun/appserver7/imq/bin/imqbroker
    5323  /home/johnsmith/hotspot/jdk/jre/bin/java -server -cp /home/johnsmith

    The PID that you need is the third from the top, i.e. 5304. In our example, the directory that you need to supply to Profiler is likely SUN_AS_HOME/domains/domain1/server1/config. You can double-check the directory by invoking the kill -QUIT server_pid command and then checking your server's server.log file for the thread dump and directory name output.

  3. After identifying the server process ID and the startup directory, follow the standard procedure of attaching to the running JVM.

Additional security permissions. If your application server runs with the Java Security Manager activated, you need to modify your security file. The file is usually specified in the Java launcher command line using the -Djava.security.policy=<policy file> option. You need to add an additional entry to this policy file, that corresponds to the Profiler classes.

grant codeBase "file:/home/johnsmith/.netbeans/3.6/lib/- {
                permission java.security.AllPermission;
                }

Attach on Server Startup (Direct Attachment):

  1. Locate the server.xml configuration file of your server:
    • %AS_HOME%\domains\{YOUR_DOMAIN}\{YOUR_SERVER}\config\server.xml (Windows)
    • $AS_HOME/domains/{YOUR_DOMAIN}/{YOUR_SERVER}/config/server.xml (Linux, Solaris)

    {YOUR_DOMAIN} stands for a concrete domain, typically "domain".
    {YOUR_SERVER} stands for a concrete server, typically "server".

  2. For bundled JDK 1.4.2 only: in this file, find the <java-config> xml element and change its "java-home" attribute as follows:
    <java-config java-home="%MODJDK_HOME%" ...>
  3. Place the following <profiler> element right after the <java-config> element before the first <jvm-options> element:
    For bundled JDK 1.4.2
    • Windows:

      <profiler enabled="true" name="NetBeansProfiler"
        native-library-path="%PROFILER_LIBS%/deployed/jdk142/windows">
        <jvm-options>-Xrunprofilerinterface:%PROFILER_LIBS%,%AGENT_PORT%</jvm-options>
      </profiler>

    • Linux, Solaris:

      <profiler enabled="true" name="NetBeansProfiler"
        native-library-path="$PROFILER_LIBS/deployed/jdk142/{OS}">
        <jvm-options>-Xrunprofilerinterface:$PROFILER_LIBS,$AGENT_PORT</jvm-options>
      </profiler>

    For JDK 5/6
    • Windows:

      <profiler enabled="true" name="NetBeansProfiler">
        <jvm-options>-agentpath:
        %PROFILER_LIBS%/deployed/jdk15/windows/profilerinterface.dll=
        %PROFILER_LIBS%,%AGENT_PORT%</jvm-options>
      </profiler>

    • Linux, Solaris:

      <profiler enabled="true" name="NetBeansProfiler">
        <jvm-options>-agentpath:
        $PROFILER_LIBS/deployed/jdk15/{OS}/libprofilerinterface.so=
        $PROFILER_LIBS,$AGENT_PORT</jvm-options>
      </profiler>

    In this case, {OS} stands for your operating system type, possible choices are linux, solaris-i386 and solaris-sparc.

Once you have made the above changes, you can profile applications running on the server using the Attach method.

Sun Java System Application Server 8 PE Integration Steps

Attach to Running Server (only with bundled customized JDK 1.4.2):

  1. Locate the asenv configuration file of the server:
    %AS_HOME%\config\asenv.bat (Windows)
    $AS_HOME/config/asenv.conf (Linux, Solaris)
  2. Modify the line containing the AS_JAVA entry as follows:
    set AS_JAVA=%MODJDK_HOME% (Windows)
    AS_JAVA="$MODJDK_HOME" (Linux, Solaris)

Attach on Server Startup (Direct Attachment):

  1. Locate the asenv configuration file of the server:
    %AS_HOME%\config\asenv.bat (Windows)
    $AS_HOME/config/asenv.conf (Linux, Solaris)
  2. For bundled JDK 1.4.2 only: modify the line containing the AS_JAVA entry as follows:
    set AS_JAVA=%MODJDK_HOME% (Windows) AS_JAVA="$MODJDK_HOME" (Linux, Solaris)
  3. Locate the domain.xml configuration file of your domain:
    %AS_HOME%\domains\{YOUR_DOMAIN}\config\domain.xml (Windows)
    $AS_HOME/domains/{YOUR_DOMAIN}/config/domain.xml (Linux, Solaris)

    {YOUR_DOMAIN} stands for a concrete domain, typically "domain1".

  4. Find the <java-config> xml element in this file and place the following <profiler> element right after the <java-config> element before the first <jvm-options> element:
    For bundled JDK 1.4.2
    • Windows:

      <profiler enabled="true" name="NetBeansProfiler"
        native-library-path="%PROFILER_LIBS%/deployed/jdk142/windows">
        <jvm-options>-Xrunprofilerinterface:%PROFILER_LIBS%,%AGENT_PORT%</jvm-options>
      </profiler>

    • Linux, Solaris:

      <profiler enabled="true" name="NetBeansProfiler"
        native-library-path="$PROFILER_LIBS/deployed/jdk142/{OS}">
        <jvm-options>-Xrunprofilerinterface:$PROFILER_LIBS,$AGENT_PORT</jvm-options>
      </profiler>

    For JDK 5/6
    • Windows:

      <profiler enabled="true" name="NetBeansProfiler">
        <jvm-options>-agentpath:
        %PROFILER_LIBS%/deployed/jdk15/windows/profilerinterface.dll=
        %PROFILER_LIBS%,%AGENT_PORT%</jvm-options>
      </profiler>

    • Linux, Solaris:

      <profiler enabled="true" name="NetBeansProfiler">
        <jvm-options>-agentpath:
        $PROFILER_LIBS/deployed/jdk15/{OS}/libprofilerinterface.so=
        $PROFILER_LIBS,$AGENT_PORT</jvm-options>
      </profiler>

    In this case, {OS} stands for your operating system type, possible choices are linux, solaris-i386 and solaris-sparc.

Once the above changes are made, you can profile applications running on the server using the Attach method.

Important Note:

If you previously installed and ran the server using JDK 5.0, and you want to profile it using the customized Profiler JDK, you will need to uninstall it and reinstall using JDK 1.4.2 (modified Profiler JDK recommended). This is because of the internal feature in this server, that creates some Java bytecodes, compiled with the javac compiler from JDK 5.0, the first time an application executes on it. These bytecodes cannot be easily uninstalled, and are incompatible with the 1.4.2-based bundled Profiler JDK.

JBoss 3.x Integration Steps

Attach to Running Server (only with bundled customized JDK 1.4.2):

Windows:

  1. Create a copy of %AS_HOME%\bin\run.bat
  2. Rename the copy to run_nbprofiler.bat
  3. At the beginning of run_nbprofiler.bat add the following line:
    set JAVA_HOME=%MODJDK_HOME%

Linux, Solaris:

  1. Create a copy of $AS_HOME/bin/run.sh
  2. Rename the copy to run_nbprofiler.sh
  3. At the beginning of run_nbprofiler.sh add the following line:
    setenv JAVA_HOME=$MODJDK_HOME

Attach on Server Startup (Direct Attachment):

Windows:

  1. Create a copy of %AS_HOME%\bin\run.bat
  2. Rename the copy to run_nbprofiler.bat
  3. At the beginning of run_nbprofiler.sh add the following lines:
    For bundled JDK 1.4.2:
    set JAVA_HOME=%MODJDK_HOME%
    set PATH=%PROFILER_LIBS%\deployed\jdk142\windows;%PATH%
    set JAVA_OPTS=-Xrunprofilerinterface:%PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTS%


    For JDK 5/6, add the following single line
    set JAVA_OPTS=
    -agentpath:%PROFILER_LIBS%\deployed\jdk15\windows\profilerinterface.dll=
    %PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTS%

Linux, Solaris:

  1. Create a copy of $AS_HOME/bin/run.sh
  2. Rename the copy to run_nbprofiler.sh
  3. For bundled JDK 1.4.2 only: at the beginning of run_nbprofiler.sh add the following lines:
    setenv JAVA_HOME=$MODJDK_HOME
    setenv LD_LIBRARY_PATH=$PROFILER_LIBS/deployed/jdk142/{OS}:$LD_LIBRARY_PATH
  4. Right before the # setup JBOSS sepecific properties label insert the following single line:
    For bundled JDK 1.4.2
    setenv JAVA_OPTS=-Xrunprofilerinterface:$PROFILER_LIBS,$AGENT_PORT $JAVA_OPTS

    For JDK 5/6
    setenv JAVA_OPTS=
    -agentpath:$PROFILER_LIBS/deployed/jdk15/{OS}/libprofilerinterface.so=
    $PROFILER_LIBS,$AGENT_PORT $JAVA_OPTS

{OS} stands for your operating system type, possible choices are linux, solaris-i386 and solaris-sparc.

Once the above changes are made, you can profile applications running on the server using the Attach method. Use the modified run_nbprofiler.bat or run_nbprofiler.sh to start JBoss.

JBoss 4.x Integration Steps

Integration instructions for JBoss 4.x are the same as for JBoss 3.x. Newer versions of JBoss can be compiled to run on JDK 5.0. If you want to profile them on the customized Profiler JDK 1.4.2, you may experience problems due to class files created with JDK 5.0 Java compiler being incompatiblel with 1.4.2 JVM. To solve these problems, you have to recompile JBoss using JDK 1.4.2 (the customized Profiler JDK recommended).

WebLogic 8.1 Integration Steps

Note: WebLogic 8.1 supports only JDK 1.4 and can be profiled only using customized Profiler JDK 1.4.2.


Attach to Running Server:

Windows:

  1. Locate the startup script of your server:
    %WL_HOME%\{PATH_TO_YOUR_DOMAIN}\{STARTUP_SCRIPT}.cmd
    {PATH_TO_YOUR_DOMAIN} stands for concrete path to your domain, for example "user_projects\domains\mydomain"
    {STARTUP_SCRIPT} stands for concrete server startup script, typically "startWebLogic.cmd"
  2. Rename the script to startWebLogic_nbprofiler.cmd
  3. Find and replace (or add) following settings in startWebLogic_nbprofiler.cmd:
    set JAVA_VENDOR=Sun
    set JAVA_HOME=%MODJDK_HOME%


Linux, Solaris:

  1. Locate the startup script of your server:
    $WL_HOME/{PATH_TO_YOUR_DOMAIN}/{STARTUP_SCRIPT}.sh
    {PATH_TO_YOUR_DOMAIN} stands for concrete path to your domain, for example "user_projects/domains/mydomain"
    {STARTUP_SCRIPT} stands for concrete server startup script, typically "startWebLogic.sh"
  2. Rename the script to startWebLogic_nbprofiler.sh
  3. Find and replace (or add) following settings in startWebLogic_nbprofiler.sh:
    JAVA_VENDOR=Sun
    JAVA_HOME=$MODJDK_HOME


Attach on Server Startup (Direct Attachment):

Windows:

  1. Locate the startup script of your server:
    %WL_HOME%\{PATH_TO_YOUR_DOMAIN}\{STARTUP_SCRIPT}.cmd
    {PATH_TO_YOUR_DOMAIN} stands for concrete path to your domain, for example "user_projects\domains\mydomain"
    {STARTUP_SCRIPT} stands for concrete server startup script, typically "startWebLogic.cmd"
  2. Rename the script to startWebLogic_nbprofiler.cmd
  3. Find and replace (or add) following settings in startWebLogic_nbprofiler.cmd:
    set JAVA_VENDOR=Sun
    set JAVA_HOME=%MODJDK_HOME%
    set PATH=%PROFILER_LIBS%\deployed\jdk142\windows;%PATH%

    After the line containing set JAVA_OPTIONS=... add following line:
    set JAVA_OPTIONS=-Xrunprofilerinterface:%PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTIONS%

Linux, Solaris:

  1. Locate the startup script of your server:
    $WL_HOME/{PATH_TO_YOUR_DOMAIN}/{STARTUP_SCRIPT}.sh
    {PATH_TO_YOUR_DOMAIN} stands for concrete path to your domain, for example "user_projects/domains/mydomain"
    {STARTUP_SCRIPT} stands for concrete server startup script, typically "startWebLogic.sh"
  2. Rename the script to startWebLogic_nbprofiler.sh
  3. Find and replace (or add) following settings in startWebLogic_nbprofiler.sh:
    JAVA_VENDOR=Sun
    JAVA_HOME=$MODJDK_HOME
    setenv LD_LIBRARY_PATH=$PROFILER_LIBS/deployed/jdk142/{OS}:$LD_LIBRARY_PATH

    After the line containing JAVA_OPTIONS=... add following line:
    JAVA_OPTIONS=-Xrunprofilerinterface:$PROFILER_LIBS,$AGENT_PORT $JAVA_OPTIONS

{OS} stands for your operating system type, possible choices are linux, solaris-i386 and solaris-sparc.

Once the above changes are made, you can profile applications running on the server using the Attach method. Use the modified startWebLogic_nbprofiler.cmd or startWebLogic_nbprofiler.sh to start WebLogic server.

WebLogic 9.0 Integration Steps

Note: WebLogic 9.0 supports only JDK 1.5 and can be profiled only using Sun's JDK 5.0_04 or later incl. JDK 6.0. Because customized Profiler JDK 1.4.2 cannot be used to run WebLogic, only Attach on Server Startup method is available.


Attach on Server Startup (Direct Attachment):

Windows:

  1. Locate the startup script of your server:
    %WL_HOME%\{PATH_TO_YOUR_DOMAIN}\{STARTUP_SCRIPT}.cmd
    {PATH_TO_YOUR_DOMAIN} stands for concrete path to your domain, for example "user_projects\domains\base_domain"
    {STARTUP_SCRIPT} stands for concrete server startup script, typically "startWebLogic.cmd"
  2. Rename the script to startWebLogic_nbprofiler.cmd
  3. Replace (or add) following settings in startWebLogic_nbprofiler.cmd after line containing set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%:

    set JAVA_VENDOR=Sun
    set JAVA_HOME=%SUN_JDK5/6_HOME%
    (if not already set)
    set JAVA_OPTIONS=
    -agentpath:%PROFILER_LIBS%\deployed\jdk15\windows\profilerinterface.dll=
    %PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTIONS%

Linux, Solaris:

  1. Locate the startup script of your server:
    $WL_HOME/{PATH_TO_YOUR_DOMAIN}/{STARTUP_SCRIPT}.sh
    {PATH_TO_YOUR_DOMAIN} stands for concrete path to your domain, for example "user_projects/domains/base_domain"
    {STARTUP_SCRIPT} stands for concrete server startup script, typically "startWebLogic.sh"
  2. Rename the script to startWebLogic_nbprofiler.sh
  3. Replace (or add) following settings in startWebLogic_nbprofiler.sh after line containing JAVA_OPTIONS="${SAVE_JAVA_OPTIONS}":

    JAVA_VENDOR=Sun
    JAVA_HOME=$MODJDK_HOME
    (if not already set)
    JAVA_OPTIONS=
    -agentpath:$PROFILER_LIBS/deployed/jdk15/{OS}/libprofilerinterface.so=
    $PROFILER_LIBS,$AGENT_PORT $JAVA_OPTIONS

{OS} stands for your operating system type, possible choices are linux, solaris-i386 and solaris-sparc.

Once the above changes are made, you can profile applications running on the server using the Attach on Server Startup method. Use the modified startWebLogic_nbprofiler.cmd or startWebLogic_nbprofiler.sh to start WebLogic server.

Generic Web/Application Server Integration Steps

Attach to Running Server (only with bundled customized JDK 1.4.2):

  1. The only requirement for this type of profiling is that the server is running on the customized Profiler JDK. This typically means changing a system/environment variable JAVA_HOME:

    Windows:
    set JAVA_HOME=%MODJDK_HOME%

    Linux, Solaris:
    setenv JAVA_HOME=$MODJDK_HOME

Attach on Server Startup (Direct Attachment):

With bundled customized JDK 1.4.2, there are three general steps that need to be done to integrate any Web/Application server with the Profiler for this attachment method:

  1. Setup the server to run on customized Profiler JDK:

    set JAVA_HOME=%MODJDK_HOME% (Windows)

    setenv JAVA_HOME=$MODJDK_HOME (Linux, Solaris)


  2. Add Profiler Agent native libraries to the system path:

    set PATH=%PROFILER_LIBS%\deployed\jdk142\windows;%PATH% (Windows)

    setenv LD_LIBRARY_PATH=$PROFILER_LIBS/deployed/jdk142/{OS}:$LD_LIBRARY_PATH (Linux, Solaris)

    {OS} stands for your operating system type, possible choices are linux, solaris-i386 and solaris-sparc.


  3. Add a special command line parameter to the java launcher:

    set JAVA_OPTS=-Xrunprofilerinterface:%PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTS% (Windows)

    setenv JAVA_OPTS=-Xrunprofilerinterface:$PROFILER_LIBS,$AGENT_PORT $JAVA_OPTS (Linux, Solaris)

    Note that JAVA_OPTS variable is only an example, its name varies between servers.

With JDK 5/6, there is just one operation that needs to be done to integrate any Web/Application server with the Profiler for this attachment method:

  Add a special command line parameter to the java launcher:

  Windows: set JAVA_OPTS=
  -agentpath:%PROFILER_LIBS%\deployed\jdk15\windows\profilerinterface.dll=
  %PROFILER_LIBS%,%AGENT_PORT% %JAVA_OPTS%

  Linux, Solaris: setenv JAVA_OPTS=
  -agentpath:$PROFILER_LIBS/deployed/jdk15/{OS}/libprofilerinterface.so=
  $PROFILER_LIBS,$AGENT_PORT $JAVA_OPTS

  Note that JAVA_OPTS variable is only an example, its name varies between servers.

 

Project Features

About this Project

Profiler was started in November 2009, is owned by Tomas Hurka, and has 56 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close