Instrumented frameworks and libraries

Java sensor instruments Java-based applications by using several frameworks and tools. The following tables list all the technologies that are used to collect data about the performance of Java applications, along with their supported versions.

The following tables list all the frameworks and tools that are used to collect data about the performance of Java applications, along with their supported versions.

Versions in the following tables are automatically generated by the IBM integration test suite. They are expressed as closed intervals. For example, [1.0, 1.2] means that the first tested version is 1.0 and the last tested version is 1.2.

HTTP libraries

Name Versions
Akka HTTP [2.4, 2.4], [10.0, 10.2]
Apache Async HttpClient [4.0, 4.1]
Apache Axis [1.3, 1.4]
Apache Axis2 [1.5, 1.8]
Apache CXF [2.3, 2.7], [3.0, 3.5]
Apache HttpClient [3.0, 3.1], [4.3, 4.5]
Apache Wicket [6.0, 6.0], [7.4, 7.14], [8.5, 8.11], [9.0, 9.12]
AsyncHttpClient (AHC) [2.0, 2.12]
AsyncHttpClient (NING) [1.8, 1.9]
Dropwizard [0.9, 0.9], [1.0, 1.3], [2.0, 2.1]
Feign [9.0, 9.7], [10.0, 10.10], [11.0, 11.10], [12.3, 12.3]
Finagle [6.45, 6.45]
GraphQL (Servlet) [8.0, 8.0], [9.0, 9.3], [10.0, 10.1], [11.0, 11.1]
GraphQL (Spring Boot) [1.0, 1.0], [2.0, 2.0]
GraphQL (Spring Webflux) [1.0, 1.0], [2.0, 2.0]
GraphQL Java [0.0, 0.0], [4.2, 4.2], [5.0, 5.0], [6.0, 6.0], [7.0, 7.0], [8.0, 8.0], [9.7, 9.7], [10.0, 10.0], [11.0, 11.0], [12.0, 12.0], [13.0, 13.0], [17.3, 17.6], [18.5, 18.5], [19.5, 19.5], [20.2, 20.2]
Grizzly [2.1, 2.4], [3.0, 3.0], [4.0, 4.0]
HTTP Kit [2.2, 2.2]
http4s[1] [0.19.0, 0.21.31]
HttpURLConnection All supported JDKs
Java HTTP Client All supported JDKs
JAX-RS
JAX-WS
Jersey [1.1, 1.19], [2.20, 2.35]
JSF [2.0, 2.2]
Micronaut [1.1, 1.3], [2.0, 2.5]
NanoHTTPD [2.2, 2.2]
OkHttp [2.0, 2.7], [3.4, 3.14], [4.0, 4.10]
Play Framework (Play2) [2.3, 2.8]
Ratpack [1.5, 1.9]
Scalatra [2.3, 2.8]
Servlet [2.0, 2.0], [3.0, 3.1], [4.0, 4.0]
Spray [1.3, 1.3]
Spring Boot Starter Web [1.2.0.RELEASE, 1.5.22.RELEASE], [2.0.0.RELEASE, 2.7.8, 3.0.2]
Spring Boot Starter Webflux [2.0.0.RELEASE, 2.7.11, 3.0.4]
Spring Cloud Gateway [2.0.2.RELEASE, 2.2.10.RELEASE], [3.0.0, 3.0.5]
Spring REST [4.0.0.RELEASE, 4.3.30.RELEASE], [5.0.0.RELEASE, 5.3.25]
Spring Web [3.0.0.RELEASE, 3.2.18.RELEASE], [4.0.0.RELEASE, 4.3.30.RELEASE], [5.0.0.RELEASE, 5.3.23]
Spring Webflux [5.0.0.RELEASE, 5.3.23]
Vaadin [7.0, 7.7], [8.7, 8.14]
Vert.x-Web [3.1, 3.9], [4.0, 4.2]
WebMethods Glue [5.0, 5.0]

Databases

Name Versions
Amazon DynamoDB [1.11.1034, 1.12.436], [2.1.4, 2.19.27]
Amazon Elasticache [1.1, 1.2]
Amazon S3 [1.11.835, 1.12.454], [2.1.4, 2.17.95]
Apache HBase [1.1, 1.5], [2.0, 2.2]
Cassandra [2.0, 2.2], [3.0, 3.11]
Couchbase [2.5, 2.7], [3.0, 3.2]
Ehcache [2.0, 2.10]
Elasticsearch [1.3, 1.7], [2.3, 2.4], [5.0, 5.0], [6.0, 6.8], [7.0, 7.17]
FaunaDB [1.2, 1.2]
Google Cloud Bigtable (HBase 1.x) [1.0, 1.29]
Google Cloud Bigtable (HBase 2.x) [1.1, 1.29]
Google Cloud Storage [1.2, 1.2]
Hazelcast Java Client [3.7, 3.12], [4.0, 4.2], [5.0, 5.2]
IBM IMS TM Resource Adapter [14.1.10, 15.3.1]
JDBC [4, 4]
JDBC (H2 Database Engine) [1.1, 1.4]
JDBC (IBM DB2)[2] [11.1, 11.5]
JDBC (Microsoft SQL Server) [6.2, 6.4], [7.0, 7.4], [8.2, 8.4], [9.2, 9.4]
JDBC (MySQL Connector/J) [5.1, 5.1], [6.0, 6.0], [8.0, 8.0]
JDBC (Oracle) [12.1, 12.1], [19.3, 19.3]
JDBC (PostgreSQL) [7.4, 7.4], [8.4, 8.4], [9.0, 9.1]
JDBC (Sybase) [1.3, 1.3]
MongoDB (Java Driver) [2.13, 2.13], [3.0, 3.12], [4.0, 4.4]
MongoDB (ReactiveMongo) [0.12.2, 0.16.0]
MongoDB (Spring Data MongoDB) [2.0.0.RELEASE, 2.7.12, 3.0.2]
Neo4j [1.5, 1.7]
Redis (Jedis) [2.8, 2.10], [3.0, 3.9]
Redis (Lettuce) [3.4, 3.4], [4.1, 4.5], [5.0, 5.3], [6.0, 6.2]
Redis (Redisson) [3.0, 3.19]
Redis (Spring Data Redis) [2.0.0.RELEASE, 2.7.8, 3.0.2]
Redis (Spring Redis Reactor) [2.0.0.RELEASE, 2.7.5, 3.0.4]
Redis (Spring Session Data Redis) [2.0.0.RELEASE, 2.6.0]
Redis (Vert.x) [3.1, 3.6]
SpyMemcached [2.10, 2.12]
SpyMemcached (Amazon ElastiCache) [1.1, 1.2]
SpyMemcached (Google XMemcached) [1.4, 1.4], [2.0, 2.4]
SpyMemcached (Netty) [4.1, 4.1]
SpyMemcached (Shade) [1.8, 1.10]

Messaging services

Name Versions
Aerospike [3.3, 3.3], [4.0, 4.4], [5.0, 5.1], [6.1, 6.1]
Akka Remote [2.3, 2.8]
Amazon Kinesis [1.11.835, 1.12.436]
Amazon SNS [1.11.1034, 1.12.454]
Amazon SQS Java Messaging Library [1.0, 1.1]
Apache Camel [2.17, 2.25], [3.0, 3.20]
Apache RocketMQ [4.9, 4.9], [5.0, 5.1]
AWS Java SDK For Amazon SQS [1.11.872, 1.12.454]
Executor Pools All supported JDKs
Fork Join Pool All supported JDKs
Google Cloud Pub/Sub (Client for Java) [1.105, 1.123]
Google Cloud Pub/Sub (Spring Cloud GCP 1.2) [1.2.5.RELEASE, 1.2.8.RELEASE]
Google Cloud Pub/Sub (Spring Cloud GCP 2 & 3) [2.0.2, 2.0.11], [3.2.1, 3.4.7]
gRPC [1.2, 1.54]
HornetQ [2.2, 2.4]
IBM MQ [8.0, 8.0], [9.0, 9.3]
JMS
JMS (Apache ActiveMQ) [5.13, 5.18]
JMS (Atomikos) [3.6, 3.9], [4.0, 4.0], [5.0, 5.0]
JMS (Solace) [10.0, 10.19]
Kafka (Apache)[3] [0.8, 0.11], [1.0, 1.1], [2.0, 2.8], [3.0, 3.2]
Kafka (Reactor) [1.0, 1.3]
Mule [3.3, 3.9]
Netflix Hystrix [1.0, 1.5]
RabbitMQ [3.6, 3.6], [4.11, 4.11], [5.7, 5.17]
RabbitMQ (Spring) [1.0.0.RELEASE, 1.7.15.RELEASE], [2.0.0.RELEASE, 2.4.0]
Tibco ESB

Logging frameworks

Name Versions
Java Util Logging All supported JDKs
Log4j [1.2, 1.2]
Log4j 2 [2.4, 2.20]
Log4j over SLF4J [1.5, 1.7]
Logback [0.9, 0.9], [1.0, 1.4]
SLF4J [1.5, 1.7]
SLF4J over Log4j [1.1, 1.7]

LDAP frameworks

Name Versions
JNDI All supported JDKs
Ldaptive (Apache) [1.0, 1.3]
Ldaptive (JLDAP) [1.0, 1.3]
Ldaptive (JNDI) [1.0, 1.3]
Ldaptive (Netscape) [1.0, 1.0]
Ldaptive (UnboundID) [1.0, 1.2]
Netscape [4.1, 4.1]
Novell [2009, 2009]
UnboundID [3.2, 3.2]

Web and application servers

Other instrumented technologies

Name Versions
Akka Actor [2.3, 2.6]
Camunda BPM Spring Boot Starter Webapp[4] [3.1.0, 3.4.0], [7.13.0, 7.17.0]
Camunda External Task Client[5] [1.0, 1.4], [7.15, 7.17]
Camunda External Task Client (Java) [1.0, 1.4], [7.15, 7.17]
Camunda Platform 7
Corba (Sun)
DistributeMe [2.3, 2.3]
Dubbo [2.5, 2.7], [3.0, 3.0]
EJB (Apache Open EJB) [4.0, 4.7]
EJB (Glassfish)
EJB (WebSphere) [8.5, 8.5], [9.0, 9.0]
FTP Commons [3.5, 3.5]
FTP JSCH [0.1.38, 0.1.55]
Google Cloud Store [1.2, 1.2]
Google GWT User [1.5, 1.7], [2.0, 2.10]
Java Mail All supported JDKs
Java RMI All supported JDKs
JBoss Data Grid (Infinispan Hot Rod client) [9.0, 9.0], [10.0, 10.0], [11.0, 11.0], [12.0, 12.0], [13.0, 13.0], [14.0, 14.0]
Kotlin Coroutines [1.0, 1.5]
Lift Actor [2.6, 2.6], [3.3, 3.5]
Quartz Scheduler [1.7, 1.8], [2.0, 2.3]
Spring Batch [1.1.4.RELEASE, 1.5.22.RELEASE], [2.0.0.RELEASE, 2.7.12, 3.0.2]
Spring Context [3.0.0.RELEASE, 3.2.18.RELEASE], [4.0.9.RELEASE, 4.3.30.RELEASE], [5.0.20.RELEASE, 5.3.25]
Spring Mail [1.2.0.RELEASE, 1.5.22.RELEASE], [2.0.0.RELEASE, 2.7.12, 3.0.2]
Spring Scheduler [1.1.4.RELEASE, 1.5.22.RELEASE], [2.0.0.RELEASE, 2.7.12, 3.0.2]
Sun ONC/RPC[6] [1.1, 1.1]
TABEX4 (BOI)
Vert.x (Hazelcast Cluster Manager) [3.3, 3.3]

WebLogic Application Server

Name Versions
EJB (Weblogic) [12, 12]
JAX-RPC
Weblogic T3[7] [12,12]

JBoss/Wildfly Application Server

Name Versions
EJB (JBoss / Wildfly) [5, 5], [7, 7], [8, 8], [11, 11]
JBoss Log Manager (Log4j) [1.0, 1.3]
JBoss Logging[8] [3.0, 3.5]
JBoss Scheduler [4.2, 4.2]
RESTEasy [3.0, 3.15], [4.0, 4.7]
Seam Mail (JBoss) [3.1, 3.1]

Opt-In support

You can use Java sensor to instrument Kafka Streams application and get insights into their performance.

Kafka Streams

In Kafka Streams, every stream operator is captured as an intermediate span. This feature impacts the performance of the application if you have a lot of data inflows. Do not use this feature in production environments.

To enable Kafka Streams, add the following lines to your host agent's configuration.yaml file:

com.instana.plugin.javatrace:
   instrumentation:
    plugins:
     Kafka011StreamIntermediate: true

  1. Only HTTP 1.x requests are traced. ↩︎

  2. You can configure Db2 tracing by using agent configuration in the configuration.yaml file, or environmental variable or system properties in the instrumented JVM. Sample configurations:

    Agent configuration:
    
    com.instana.tracing:
    db2:
    trace-correlation: true
    db2CorrelationMode: dont-override
    db2CorrelationDelimiter: '|'
    db2CorrelationField: ClientHostname
    
    Environmental variable:
    
    INSTANA_DB2_TRACE_CORRELATION=true
    INSTANA_DB2_TRACE_CORRELATION_MODE=dont-override
    INSTANA_DB2_TRACE_CORRELATION_DELIMITER='|'
    INSTANA_DB2_TRACE_CORRELATION_FIELD=ClientHostname
    
    System properties:
    
    -Djdbc.db2.correlation.enable=true
    -Djdbc.db2.correlation.mod=dont-override
    -Djdbc.db2.correlation.delimiter=|
    -Djdbc.db2.correlation.field=ClientHostname
    

    Note: Correlation (propagating TraceId and SpanId) is disabled by default. Propagation happens by using client information properties of Db2. The correlation field sets the field name. By default, it is "ClientHostname". The default delimiter is "|". If the correlation mode is set to "override" (default), the correlation data overwrites any existing value. However, if it is not set to "override" (default), the correlation data is appended to the existing value. ↩︎

  3. Trace continuity is supported for Kafka starting from Kafka 0.11, which introduces support for record headers. ↩︎

  4. Trace continuity between the activity spans is not yet supported. ↩︎

  5. When you implement the handler class for the Camunda External Task Client, you need to use a named handler class. Lambda expression implementation of the handler is not supported. ↩︎

  6. Trace continuity is not supported. Use the Instana SDK for trace correlation. ↩︎

  7. Weblogic T3 correlation between EJB calls is supported when you configure Weblogics T3 through the following settings:

    • Agent configuration:

        # General Tracing Settings
        com.instana.tracing:
        weblogic:
            trace-correlation: true
      
    • Environmental variable:

      INSTANA_WEBLOGIC_EJB_TRACE_CORRELATION
      
    • System property:

       -Dcom.instana.weblogic.ejb.trace.correlation=true`
      

    This configuration works only if the T3 communication happens between Weblogic servers. However, if the Weblogic client is used outside the Weblogic server, correlation is not possible. ↩︎

  8. Only the programmatic API is traced. Logging by using annotations like @Message or @MessageLogger is not supported. ↩︎