Java Compatibility Requirements
Incident Management is now generally available! Incident Management is now generally available!

Java Compatibility Requirements

Compatibility

The Java Datadog Trace library is open source - view the Github repository for more information.

Datadog officially supports the Java JRE 1.7 and higher of both Oracle JDK and OpenJDK. Datadog does not officially support any early-access versions of Java.

Beta integrations are disabled by default but can be enabled individually:

  • System Property: -Ddd.integration.<INTEGRATION_NAME>.enabled=true
  • Environment Variable: DD_INTEGRATION_<INTEGRATION_NAME>_ENABLED=true

Web Framework Compatibility

dd-java-agent includes support for automatically tracing the following web frameworks.

Web Framework tracing provides:

  • timing HTTP request to response
  • tags for the HTTP request (status code, method, etc)
  • error and stacktrace capturing
  • linking work created within a web request and Distributed Tracing
ServerVersionsSupport TypeInstrumentation Names (used for configuration)
Akka-Http Server10.0+Fully Supportedakka-http, akka-http-server
Finatra Web2.9+Fully Supportedfinatra
Grizzly2.0+Betagrizzly
Grizzly-HTTP2.3.20+Betagrizzly-filterchain
Java Servlet Compatible2.3+, 3.0+Fully Supportedservlet, servlet-2, servlet-3
Jax-RS AnnotationsJSR311-APIFully Supportedjax-rs, jaxrs, jax-rs-annotations, jax-rs-filter
Jetty (non-Servlet)8+Betajetty, jetty-8
Netty HTTP Server3.8+Fully Supportednetty, netty-3.8, netty-4.0, netty-4.1
Play2.3-2.8Fully Supportedplay, play-action
Ratpack1.5+Fully Supportedratpack
Spark Java2.3+Betasparkjava (requires jetty)
Spring Web (MVC)4.0+Fully Supportedspring-web
Spring WebFlux5.0+Fully Supportedspring-webflux

Note: Many application servers are Servlet compatible and are automatically covered by that instrumentation, such as Tomcat, Jetty, Websphere, Weblogic, and JBoss. Also, frameworks like Spring Boot inherently work because it usually uses a supported embedded application server (Tomcat/Jetty/Netty).

Don’t see your desired web frameworks? Datadog is continually adding additional support. Contact Datadog support if you need help.

Networking Framework Compatibility

dd-java-agent includes support for automatically tracing the following networking frameworks.

Networking tracing provides:

  • timing request to response
  • tags for the request (e.g. response code)
  • error and stacktrace capturing
  • distributed tracing
FrameworkVersionsSupport TypeInstrumentation Names (used for configuration)
Apache HTTP Client4.0+Fully Supportedhttpclient, apache-httpclient, apache-http-client
Apache HTTP Async Client4.0+Fully Supportedhttpasyncclient, apache-httpasyncclient
AWS Java SDK1.11+, 2.2+Fully Supportedaws-sdk
Commons HTTP Client2.0+Fully Supportedcommons-http-client
Google HTTP Client1.19.0+Fully Supportedgoogle-http-client
Grizzly HTTP Client1.9+Betagrizzly-client
gRPC1.5+Fully Supportedgrpc, grpc-client, grpc-server
HttpURLConnectionallFully Supportedhttpurlconnection, urlconnection
Kafka-Clients0.11+Fully Supportedkafka
Kafka-Streams0.11+Fully Supportedkafka, kafka-streams
Java RMIallFully Supportedrmi, rmi-client, rmi-server
Jax RS Clients2.0+Fully Supportedjax-rs, jaxrs, jax-rs-client
Jersey Client1.9+Fully Supportedjax-rs, jaxrs, jax-rs-client
JMS1 and 2Fully Supportedjms, jms-1, jms-2
Netty HTTP Client4.0+Fully Supportednetty, netty-4.0, netty-4.1
Ning HTTP Client1.9.0+Betaning
OkHTTP2.2+Fully Supportedokhttp, okhttp-2,okhttp-3
Play WSClient1.0+Fully Supportedplay-ws
Rabbit AMQP2.7+Fully Supportedamqp, rabbitmq
Spring SessionAwareMessageListener3.1+Fully Supportedspring-jms-3.1
Spring WebClient5.0+Fully Supportedspring-webflux, spring-webflux-client

Note: Datadog’s Kafka integration works with Kafka version 0.11+, which supports the Header API. This API is used to inject and extract trace context. If you are running a mixed version environment, the Kafka broker can incorrectly report the newer version of Kafka. This causes an issue when the tracer tries to inject headers that are not supported by the local producer. Additionally, older consumers are unable to consume the message because of the presence of headers. To prevent these issues, if you are running a mixed version Kafka environment with versions older than 0.11, disable context propagation with the environment variable: DD_KAFKA_CLIENT_PROPAGATION_ENABLED=false.

Don’t see your desired networking framework? Datadog is continually adding additional support. Contact Datadog support if you need help.

Data Store Compatibility

dd-java-agent includes support for automatically tracing the following database frameworks/drivers.

Datastore tracing provides:

  • timing request to response
  • query info (e.g. a sanitized query string)
  • error and stacktrace capturing
DatabaseVersionsSupport TypeInstrumentation Names (used for configuration)
Aerospike4.0+Fully Supportedaerospike
Couchbase2.0+Fully Supportedcouchbase
Cassandra3.xFully Supportedcassandra
Elasticsearch Transport2.0-7.xFully Supportedelasticsearch, elasticsearch-transport, elasticsearch-transport-{2,5,6} (pick one)
Elasticsearch Rest5.0-7.xFully Supportedelasticsearch, elasticsearch-rest, elasticsearch-rest-5, elasticsearch-rest-6
JDBCN/AFully Supportedjdbc, jdbc-datasource
Jedis1.4+Fully Supportedjedis, redis
Lettuce4.0+Fully Supportedlettuce, lettuce-4-async, lettuce-5-rx
MongoDB3.0-4.0+Fully Supportedmongo
RediScala1.5+Fully Supportedrediscala, redis
SpyMemcached2.12+Fully Supportedspymemcached

dd-java-agent is also compatible with common JDBC drivers including:

  • Apache Derby
  • Firebird SQL
  • H2 Database Engine
  • HSQLDB
  • IBM DB2
  • MariaDB
  • MSSQL (Microsoft SQL Server)
  • MySQL
  • Oracle
  • Postgres SQL
  • ScalikeJDBC

Don’t see your desired datastores? Datadog is continually adding additional support. Contact Datadog support if you need help.

Additional framework compatibility

dd-java-agent includes support for automatically tracing the following frameworks.

FrameworkVersionsSupport TypeInstrumentation Names (used for configuration)
Dropwizard Views0.7+Fully Supporteddropwizard, dropwizard-view
Hibernate3.5+Fully Supportedhibernate, hibernate-core
Hystrix1.4+Fully Supportedhystrix
JSP Rendering2.3+Fully Supportedjsp, jsp-render, jsp-compile
Project Reactor3.1+Fully Supportedreactor-core
RxJava2.xFully Supportedrxjava
Spring Data1.8+Fully Supportedspring-data
Spring Scheduling3.1+Fully Supportedspring-scheduling
Twilio SDK0+Fully Supportedtwilio-sdk

Don’t see your desired frameworks? Datadog is continually adding additional support. To request a framework, contact our awesome support team.

To improve visibility into applications using unsupported frameworks, consider:

Disabling Integrations

Most integrations are enabled by default. The following setting can change the default to disabled.

  • System Property: -Ddd.integrations.enabled=false
  • Environment Variable: DD_INTEGRATIONS_ENABLED=false

Integrations can be enabled or disabled individually (overriding the default above).

  • System Property: -Ddd.integration.<INTEGRATION_NAME>.enabled=true
  • Environment Variable: DD_INTEGRATION_<INTEGRATION_NAME>_ENABLED=true

(See above for each integration’s name.)

Further Reading

Additional helpful documentation, links, and articles: