Server Enhancements

Console Enhancements

JVMPI Agent Enhancements

Installation & Deployment Changes 

Terminal Enhancements

Server Enhancements

Distributed JMS Trace Extension
The JMS trace extension has been enhanced to support the tracing of JMS Message routed across multiple JVM's. This new enhancement also support the intra-JVM tracing of JMS message produced and consumed by different threads. This is extremely useful for J2EE applications that contain Session beans producing JMS messages which are then consumed by MessageDriven Beans within the same container instance.




Commonj WorkManager and TimeManager Trace Extension

The extension traces and profiles instances of WorkManager, WorkItem, WorkItem, WorkEvent, WorkListener, TimerManager, Timer, TimerListener, accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




JAX-RPC (WebService) Trace Extension
The extension traces and profiles instances of javax.xml.rpc.Service and javax.xml.rpc.Call accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




RMI Trace Extension

The extension traces and profiles instances of java.rmi.Remote accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.


EJB3 Trace Extension

The extension traces and profiles instances of javax.persistence.EntityManager and javax.persistence.Query accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




Java Connector Architecture (JCA CCI) Trace Extension
The extension traces and profiles instances of ConnectionFactory, Connection, Interaction, and Record accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




JTS XAResource Trace Extension
The extension traces and profiles instances of XAResource accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.


Directory/LDAP Trace Extension

The extension has been enhanced to include tracing and profiling of instances of DirContext, LdapContext, InitialContextFactory, and NamingEnumerations accessed directly or indirectly via a JNDI lookup. The enhancement is specifically for LDAP providers deployed as JCA resource adaptors and using the InitialContextFactory interface as the RA connection factory interface.


Java Content Repository (JCR) Trace Extension

The extension traces and profiles instances of Repository, Workspace, Session, Node, Property, Version, VersionHistory, Query, QueryManager, Lock and NodeType accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




Java 5 Annotations

The profiler can reflectively inspect packages, classes, methods and fields appending annotation information to a snapshot.



Hibernate 2.0 / 3.0 Trace Extension

The extension traces and profiles instances of SessionFactory, Session, Query, and Transaction accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




JDO (Vendor Neutral) Trace Extension

The extension traces and profiles instances of PersistenceManagerFactory, PersistenceManager, Connection, Query, Extent and Transaction accessed directly or indirectly via a JNDI lookup ensuring that only component boundary profiling and tracing is performed.




JBoss EJB Interceptor Trace Extension
The JBoss distributed trace extension is based on the JBoss pluggable container and client proxy interceptor framework. The trace extension supports the tracing of all EJB (session, entity, and message driven beans) method invocations within in the container or remote clients. The extension can trace calls across JVMs.


Spring AOP Trace Extension
One of the key components of the Spring framework is its AOP framework which allows users to implement custom aspects, complementing their use of OOP with AOP. JXInsight trace extension provides a plug-in replacement for the basic performance and debugging interceptors distributed with the Spring libraries. The JXInsight TraceInterceptor provides high resolution clock counters, JVM statistics including GC time, CPU time, object allocations, thread blocking and waiting per trace interval as well as call stack inspection and classification and integration into the award winning JXInsight console.




JUnit Trace Extension
The Ant trace extension can dynamically integrate JXInsight JUnit trace extension supporting tracing of local and remote (forked) JUnitTasks. The following screenshot shows the eXtensible distributed tracing and profiling capabilities of JXInsight: Ant task (process=1515) to a forked JUnit Test Case (process=1516).


Apache Ant Trace Extension
The Apache Ant trace extension traces and profiles the execution of project, targets, and tasks. The following screen shot shows the trace tree created during the execution of the run-client target contained in the build example file of the J2EE™ Tutorial/Samples Application -Dukes Bank.


JDBC Drivers and DataSources

- The JDBC URL 1.x to JDBC driver classname mapping has been expanded to include drivers from JNetDirect, INet, Microsoft, MYSQL, IDS.
- The JDBInsight Oracle specific JDBC classes have been upgraded to support the latest (10g) method signatures defined in oracle.jdbc.* interfaces.
- Added Opta [SQL Server] DataSource classes with similiar JavaBean properties for easy interchange.
   com.inet.tds.TdsDataSource => com.jinspired.jdbinsight.drivers.jdbc2.TdsDataSource
   com.inet.tds.PDataSource => com.jinspired.jdbinsight.drivers.jdbc2.TdsPDataSource

Console Enhancements

Ease of Use
Added server system property -Djxinsight.server.name=<instance-name> that when detected by the console in a server snapshot (profile, timeline, metric) will be used as the label for the server instead of hostname:port. The console status bar now displays the profiling interval and duration for a cluster, server, or snapshot


Color Themes

The JXInsight console now supports the definition and installation of color theme for common elements of the console's user interface. The current color themes are default, monday, tufte, hessian, breeze and mactopia. To change from the default theme to the tufte color scheme edit the jxinsight.console.config file located in the installation root setting the system property to jxinsight.console.theme= tufte

Color Theme: tufte (Inspired by Edward Tufte's illustrations in his three beautiful information visualization books)






Classes Perspective

The Classes perspective can includes all fields and methods for EJB 3 objects annotated with @Entity or @Embeddable. It also includes all methods for EJB 3 objects annotated with @Stateful or @Stateless. Class and method tooltips now display annotation information including annotation type and values.




Classifications

The classification of call stack now includes EJB annotations. The mapping of annotation type to a JXInsight classification is as follows
  javax.persistence.Entity = ejb:entity
  javax.persistence.Embeddable = ejb:embeddable
  javax.ejb.Stateful = ejb:session
  javax.ejb.Stateless = ejb:session




JDBC Call Trace View
The persistence partition in the Calls perspective includes classes and methods with JCR, EJB3, JAX-RPC, Hibernate, commonj classifications.




Icon Set Redesign and Color Encoding

JXInsight 4.0 includes a complete redesigned of all call stack icons to align with color encoding in trace icons and graphical views







Inject Trace
Added Inject Trace menu command on server node within the browser navigation pane. The command inserts a new trace entry onto the trace stack for all future traces within the server's JVM. The injection spans thread groups and threads. It can be viewed somewhat like a system trace root identifier but over time dynamic.


Snapshot Note
The global text note can be applied to a snapshot containing additional information about the execution context and environment.



JVMPI Agent Enhancements

Platform Support
The JVMPI agent now includes native 64bit support for Windows 64 bit and Linux 64 bit JVMs.
<JXINSIGHT-INSTALL-ROOT> /bin/windows-x86-64/jdbinsight.dll
<JXINSIGHT-INSTALL-ROOT> /bin/linux-x86-64/libjdbinsight.so


Agent System Properties

There is are new system properties to enable or disable JVMPI agent events on startup of the JXInsight server. The benefit of the new system properties is the ability to turn on expensive JVMPI events such as object allocations following the initialization of the application server and/or container. Instead of -Xrunjdbinsight:a=t specify -Djxinsight.server.agent.events.allocation.enabled=true.
   jxinsight.server.agent.events.blocking.enabled=true|false
   jxinsight.server.agent.events.waiting.enabled=true|false
   jxinsight.server.agent.events.allocation.enabled=true|false
   jxinsight.server.agent.events.gc.enabled=true|false   

Installation & Deployment Changes
 
Java Libraries
The old library jdbidriver.jar has been renamed and partitioned into multiple jars to support the class loading of particular trace extension into child class loaders which is typical within J2EE application server and web container classloader hierarchies. When deploying a jxinsight-ext-*.jar library the jxinsight-core.jar must be deployed instead of jxinsight-all.jar. The jxinsight-core.jar must be visible to all trace extensions via the same classloader or a direct/indirect parent classloader. For backward compatibility the jxinsight-all.jar (previously named jdbidriver.jar) is built with all JXInsight and JDBInsight classes and resources.

Jar Name
Description
jxinsight-all.jar
All classes from jxinsight-core.jar, jxinsight-ext-*.jar and jxinsight-jdbc-drivers.jar
jxinsight-core.jar
JXInsight Tracer and Profiler and JSE trace extensions (JDBC, CORBA, JNDI, RMI, JMX)
jxinsight-jdbc-drivers.jar
JDBInsight JDBC Drivers and DataSources
jxinsight-ext-j2ee.jar J2EE trace extensions (JMS, JCA, EJB, JTS, JTA, Servlets/JSP, JAX-RPC)
jxinsight-ext-jcr.jar Java Content Repository (JCR) trace extension
jxinsight-ext-vbj.jar Borland VisiBroker (distributed) trace extension
jxinsight-ext-kodo.jar
SolarMetric Kodo JDO trace extension
jxinsight-ext-jboss.jar
JBoss EJB (distributed) trace extension
jxinsight-ext-ant.jar
Apache Ant trace extension
jxinsight-ext-junit.jar
JUnit trace extension
jxinsight-ext-jdo.jar
JDO trace extension
jxinsight-ext-hibernate.jar Hibernate 3.0 and 2.0 trace extensions
jxinsight-ext-ejb3.jar EJB3 trace extension (Note: The EJB3 trace extension is not included in jxinsight-ext-j2ee.jar)
jxinsight-ext-commonj.jar commonj WorkManager and TimerManager trace extensions
jxinsight-ext-spring.jar Spring Framework AOP based Trace Interceptor
jxinsight-ext-hpovobs.jar HP OpenView OBS TraceInterceptor


System Properties
All system properties have been changed from jdbinsight.* to jxinsight.*. For backward compatibility existing jdbinsight.* properties will be recognized though it is strongly recommended that all customers upgrade their existing configurations.


Public Trace Extensions Classes
Public trace extension classes have been migrated from com.jinspired.jdbinsight.trace.* to com.jinspired.jxinsight.trace.*. For backward compatibility the classes in com.jinspired.jdbinsight.trace.* still remain though in most cases they merely extend from the migrated versions in com.jinspired.jxinsight.trace.*. The JDBInsight Driver and DataSource classes remain unchanged.


Script Changes
The console and terminal scripts have been renamed from jdbiconsole.(bat|sh) and jdbiterminal.(bat|sh) to jxinsight-console.(bat|sh) and jxinsight-terminal.(bat|sh).


Native Agent Library
The JVMPI agent library has not been renamed and still retains the jdbinsight reference (jdbinsight.*|libjdbinsight.*). We have choosen to leave this unchanged so as to differentiate our forthcoming JVMTI agent which will reference jxinsight (jxinsight.*|libjxinsight.*).

Terminal Enhancements

Monitor Command
Added new server monitor command. The monitor command allows the dynamic setting of JVMPI events such as garbage collection, blocking, waiting, object allocations as well as server options profile and timeline analysis.

Options
-status: retrieve the status of all monitoring events and profiling.
-events: instructs the server to dynamically start monitoring gc, blocking, waiting and allocations.
Note: events not listed within the -event {g|b|w|a} parameter set will be switched off.

-profile: instructs the server to start|stop profiling.
-timeline: instructs the server to start|stop timeline analysis.
-host: specify a host name default is localhost
-port: specify a port number default is 1515.

Examples
> monitor -events gbwa -profile start -timeline stop -h localhost -p 1515
> monitor -events bw -pr start -tl start -h localhost -p 1515 monitor -status -h localhost -p 1515

InjectTrace
Added command to which inserts a new trace entry onto the trace stack for all future traces within the server's JVM. The injection spans thread groups and threads. It can be viewed somewhat like a system trace root identifier but over time dynamic.
Note: Spaces within the trace name are currently not supported from within the terminal.


Options
-get: retrieve the currently specified trace.
-set: specify a new trace entry onto the trace stack for all future traces.
-remove: remove the currently set trace.
-host: direct the injecttrace action to a specified host.
-port: specify the active port for a specifed server.

Examples
injecttrace -set traceName -host 172.29.20.20
injecttrace -get -host 172.29.20.20
injecttrace -remove -host 172.29.20.20