Download PDF
Download page Java Agent Notes.
Java Agent Notes
Related pages:
If an artifact has been updated, the version number of the updated artifact and its availability date are listed below. The version number corresponds to that shown on the download portal (http://download.appdynamics.com).
The most recent releases appear at the top of the page.
4.5.19 Updates
Version 4.5.19 – February 20, 2020
Enhancements
- The AdoptOpenJDK is added to the set of Java runtimes explicitly certified with the Java Agent. Learn more.
- Java Agent can now run without the
jdk.jcmd
module for the Java version 9 and later. - You can enable business transaction correlation using
SOAP:Header
with WebLogic, WebSphere, and Tibco implementations. The SOAP header is an alternative to the default correlation via HTTP headers. Learn more.
4.5.18 Updates
Version 4.5.18 – January 20, 2020
Enhancements
- The Java Agent now supports OkHttp versions 3 and 4 for the synchronous and asynchronous cases.
- You can enable business transaction correlation using SOAP: Header with Spring WS implementations. The SOAP header is an alternative to the default correlation via HTTP headers.
- Agent API: Two new APIs have been introduced, one for renaming a synchronous transaction and another for naming a transaction using servlet. Learn more.
- An 'instrumentation SDK' has been provided that supports the use of the APIs. This iSDK allows users to create custom instrumentation to apply to the code in their application, therefore avoiding the need to make development changes to instrument the code. Learn more.
- Agentless Analytics now supports license rules configured in the Java Agent version 4.5.18 and later.
4.5.17 Updates
Version 4.5.17 – December 13, 2019
Enhancements
- The Java Agent now blacklists the use of several classes and methods for getter chains. Learn more.
- For OSB, WSDL and SOAP are now web service entry points.
- The Java Agent now marks business transaction errors that originate from an OSB entry point.
4.5.16 Updates
Version 4.5.16.28759 – November 15, 2019
Enhancements
- The Java Agent now supports Micronaut version 1.1.0.
- You can enable business transaction correlation using
SOAP:Header
with Axis 2 and JAX-WS implementations. The SOAP header is an alternative to the default correlation via HTTP headers. - You can collect Transaction Analytics data from the Java Agent without the need for a dedicated Analytics Agent. This feature is available with the 4.5.16 Controller and 4.5.16 Java Agent. Learn more in Application Analytics Notes.
Known Issue
Transaction Analytics without an Analytics Agent is automatically enabled for SaaS Controllers with Java Agent 4.5.16 and later. If you deploy Analytics to multiple nodes, you may not receive Transaction Analytics data. AppDynamics recommends that you do not upgrade to Java Agent 4.5.15 and later if you are running multiple nodes. If you have already upgraded your deployment, contact AppDynamics Support to downgrade.
4.5.15 Updates
Version 4.5.15.27926 – October 17, 2019
Enhancements
The Java Agent now:
- Supports MongoDB Reactive Streams Driver, versions 1.3-1.12.
- Detects access to MongoDB via MongoDB Async Java Driver versions 3.4-3.11, using asynchronous APIs.
- Filters out snapshot segments whose duration is below a configurable threshold (5ms default) and does not make any exit calls to aid snapshot usability.
- Adds Push Promise support for Java HTTP Async Client. Threads executing push promise handlers will be correlated with the business transaction within which the associated HTTP request initiated.
- Supports JDK13 with one 'Known Issue' (see below).
Known Issues
When the 4.5.15 Java Agent runs on JDK12 or JDK13, it may cause the JVM to crash. To prevent a JVM crash, set the following property:
appdynamics.agent.prefer.retransformClasses=true
This issue has been reported to Oracle and assigned Issue ID JDK-8232997.
4.5.14 Updates
Version 4.5.14.27768 – September 19, 2019
Enhancements
- The Java Agent now supports Jboss EAP 7.x
- Support has been added for Mule 4.2.0 and 4.2.1.
4.5.13 Updates
Version 4.5.13.27526 – August 27, 2019
Enhancements
- Added support for Akka 2.5 for HTTP
- Added OpenTracing support
- Added support for collection of cross-app BT-BT metrics, disabled by default controlled by disable-service-monitoring-metrics node property
By default, AppDynamics excludes SSLv3 and TLSv1protocols due to the known vulnerabilities. You can enable it explicitly by passing the -
Dappdynamics.agent.tls.allowedAlgorithms
property to your startup script.
Resolved Issues
Key | Summary |
---|---|
JAVA-249 | Support for latest Jboss EJB client for RMI call correlation |
JAVA-5490 | Java Agent throws ArrayIndexOutOfBoundsException when custom backend naming rules refer to backend URL segments that are not present in the backend call |
JAVA-5736 | Exception logged at INFO level unbounded times and fills the logs |
JAVA-5842 | Mule 4.1 in process BT correlation incomplete when using APIKit Router |
JAVA-5874 | Unable to instrument Java Agent with Java 11 |
JAVA-5952 | Xpath split feature does not work in version 4.5.10 |
JAVA-6041 | Error 'java.lang.VerifyError Stack size too large' when instrumenting java 1.7+ classes |
JAVA-5918 | Memory leak due to error in JMSReceiveExitPointInterceptor if transaction fails to start |
JAVA-5925 | Setting property javax.xml.parsers.DocumentBuilderFactory causes ClassCastException in agent |
JAVA-5950 | Rest logs are coming empty, and logging goes to agent logs instead |
JAVA-6075 | Updated vulnerable jackson-databind library |
JAVA-6162 | Null Pointer Exception (NPE) in log GUID injection code when hit from identification interceptor |
4.5.12 Updates
Version 4.5.12.27094 – July 18, 2019
Resolved Issues
Key | Summary |
---|---|
JAVA-5401 | JVM and JMX metrics are not reported after the agent is turned off with 'Disable all monitoring including JVM and JMX metrics' option unchecked |
JAVA-5434 | Application level cross-application call metric reports missed due to race condition |
JAVA-5535 | 'Error StatusLogger No log4j2 configuration file found' logger message comes up on startup with JDK9+ |
JAVA-5655 | Custom JMS BT exclude rules are not applied at JMS receive entries |
JAVA-5687 | Upgrade log4j2 version to be compatible with Java 1.6 and eliminates CVEs |
JAVA-5837 | Custom POJO exclude rules including overloaded method parameters are not correctly applied |
Known Issues
Setting property -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
causes ClassCastException.
4.5.11 Updates
API Version 4.5.12.26900 – July 11, 2019
Updated the agent API package. See, Java API User Guide for more details.
Version 4.5.11.26665 – June 17, 2019
Enhancements
Added support for JDK version 12
- Added exit support for JDK11 async HTTP client
- Added experimental support for executor-based instrumentation of thread handoffs
- Added disable-agent-api node property to disable all calls to the agent-api library
Resolved Issues
Key | Summary |
---|---|
JAVA-5406 | Exception java.lang.NoSuchFieldException is seen on agent on startup when used with Java 12 |
JAVA-5526 | Agent logs are not available on Controller when the -Dappdynamics.agent.reuse.nodeName=true system property is enabled |
JAVA-5007 | Grizzly async HTTP client instrumentation needs enhancement to support v1.14 |
JAVA-5814 | Sensitive data filter applies extra characters in snapshot list view |
Deprecation Notice
First generation agent SDK has been deprecated.
4.5.10 Updates
Version 4.5.10.25916 – May 20, 2019
Enhancements
- Added support for OSB split-join and JMS. Other exits will appear as custom backends.
- Added exit support for Jetty Reactive HTTP Client and EUM support for Reactor Netty entry
- Added JMS support for Mule 4.1.x
- Added support for Amazon Corretto JVM v8 and v11
Resolved Issues
Key | Summary |
---|---|
JAVA-5324 | Calls per minute at tier level are not reported when a ribbon is used for synchronous external calls |
JAVA-5140 | Instrumentation to support struts v2.3.17+ |
JAVA-5517 | Debug-interceptors via custom-interceptors.xml throws NullPointerException |
JAVA-5578 | JVM 1.6 hangs under certain conditions due to contention with AppDynamics Coalescable_CS_Scheduler thread |
4.5.9 Updates
Version 4.5.9.25648 – April 19, 2019
Enhancements
- Added HTTP support for Mule 4.1.x
- Added support for socket instrumentation for Reactor Netty Entry
- Added agent support for WebFlux and WebClient
- Added support for Vertx version 3.6.0
Resolved Issues
Key | Summary |
---|---|
JAVA-1043 | "Invalid tier or backend specified in To section" error thrown by addMetric method |
JAVA-4812 | Overlapping entries in BCI log |
JAVA-4908 | Error during agent startup from Log4j2 conflict |
JAVA-4970 | Old library versions shipped with Java agent trigger security-scan hits |
JAVA-5166 | Log4j refactoring to addresses coexistence issues |
JAVA-5181 | ClassFormatError – if any class implementing interface extending serializable, runnable gets instrumented |
JAVA-5190 | ASM unable to visit class constructor for classes compiled pre-jdk 1.5 after upgrading to agent 4.5.5 |
JAVA-5205 | NPE in IbmBpmUserTaskCoachEntryInterceptor while ProcessPortal login |
JAVA-5210 | Classes loaded by agent scheduler cause deadlock on startup under some conditions |
JAVA-5217 | Extra DB commit calls with getConnection instrumentation |
JAVA-5218 | Dynamic service fails to start with manifest errors on Java/JRE 11 |
JAVA-5223 | NullPointer for MariaDB JDBC APIs - missing SQL |
JAVA-5251 | SEP rule does not work when arguments are specified |
4.5.8 Updates
Version 4.5.8.25346 – March 14, 2019
Enhancements
- Added initial support for Project Reactor and Spring WebFlux
- Added support for IBM BPM v8.6
- Added initial support for Oracle Service Bus HTTP use cases
- Added two environment variables to set reuse.nodeName and reuse.nodeName.prefix
Resolved Issues
Key | Summary |
---|---|
JAVA-4511 | Could not start Java Agent with Azul Zulu JDK 11 |
JAVA-4908 | Error during agent startup from Log4j2 conflict |
JAVA-4960 | Improve handling of dynamic service failures |
JAVA-5004 | Snapshot marked error but error details are not getting updated if more than two occurrences of same error occur in a minute |
JAVA-5056 | Minor cleanup for documentation in app-agent-config.xml |
JAVA-5060 | Classloader deadlock caused by scheduler run parallel to the transformation |
JAVA-5068 | JMX metrics does not work as expected using wildcard configuration |
JAVA-5071 | Exit call in a snapshot is converted to upper case |
JAVA-5077 | Agent returns only one thread dump on thread dump request |
JAVA-5108 | Sensitive data scrubbing causes an exception if scrubbed parameters are not present |
JAVA-5131 | Negative Values in ASnapshotCountTracker |
JAVA-5144 | Preloading agent classes does not load metrics related classes |
JAVA-5126 | Remove index values from async segment names for lambda originated segments |
JAVA-5198 | No longer possible to disable log4j2 with appdynamics.agent.log4j2.disabled=true |
JAVA-5384 | Null Point Exception on agent startup with log4j2 on Java 9+ versions |
Known Issues
- The new support added in 4.5.8 for the Spring WebFlux framework does not currently include support for EUM or NetViz socket correlation.
4.5.7 Updates
Version 4.5.7.24863 – February 6, 2019
Enhancements
- Added a new node property
max-metrics-allowed
to update the metric registration limit
Resolved Issues
Key | Summary |
---|---|
JAVA-4747 | Upgrade to latest Apache HttpComponents |
JAVA-4550 | Property "max-async-transformed-classes" ,"jmx-operation-timeout-in-milliseconds" not getting updated |
JAVA-4665 | IndexOutofBoundException during ActivityInProcessConsumerInterceptor |
JAVA-4674 | Java Agent does not clean up stale metric aggregators for Unregistered BT |
JAVA-4716 | NullPointerException in PrepareStatementBindInterceptor when TransactionContext not set |
JAVA-4780 | IBM MQ - Exclude agent logging if singularity header is not found during entry point |
JAVA-4782 | ClassCastException in CustomExitPointInterceptor |
JAVA-4800 | Agent exception caused by regex special characters in sensitive URL filter delimiter |
JAVA-4844 | Java APM agent stalls startup for application with many dependencies in boot classpath |
JAVA-4904 | Disable resource monitoring by default |
JAVA-4918 | ClassCastException in PreparedStatementBindInterceptor for com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement |
JAVA-4924 | JMS does not continue transaction if automatic discover transactions are disabled for JMS |
JAVA-4942 | Remove excessive logging for MBean discovery failures |
JAVA-4946 | Avoid reporting error details with key "null" |
JAVA-4959 | Continue agent initialization when transaction.xml fails to parse |
JAVA-4961 | PHP Execution Time in transaction snapshots always showing zero |
JAVA-5019 | Agent does not mark snapshot as error |
JAVA-5042 | Upgrade to latest jackson-databind |
4.5.6 Updates
Version 4.5.6.24621 – January 10, 2019
Enhancements
- Added support for both Play 2.6.x and Akka HTTP with Scala 2.12
- Updated ASM to version 7
- Added JVM property
-Dappdynamics.agent.conf.dir
to define conf directory location - Added a new node property normalize-prepared-statements
Resolved Issues
Key | Summary |
---|---|
JAVA-4473 | Improve coverage for tasks rejected by ThreadPoolExecutor |
JAVA-4638 | Exit Call to Rest based downstream is not being detected |
JAVA-4656 | Malformed metric strings with BT:0 and Th:null getting rejected by Controller |
JAVA-4722 | Hide sensitive data being propagated to analytics |
JAVA-4730 | Fix BT Naming Issue when OSB is Originating Tier |
JAVA-4736 | Upgrade file upload-1.3.2 in Java Agent |
JAVA-4742 | NullPointerException in HttpDataGatherer breaking application |
JAVA-4754 | NPE in Async interceptor on Tibco BW |
JAVA-4758 | EUM Instrumentation is not happening correctly for Mulesoft |
JAVA-4759 | Exceptions with singularity class |
JAVA-4805 | Fix ClassCastException in IbmBpmSystemTaskPayload |
JAVA-4845 | Thread dumps are getting stuck when requesting from Controller |
JAVA-4859 | Merge to 4.5.6: Log4J errors on startup due to lack of configuration |
JAVA-4863 | NPE in NettyV3EntryInterceptor |
JAVA-4864 | Race condition for update AsyncTimestamp |
JAVA-4904 | Disable resource monitoring by default |
4.5.5 Updates
Version 4.5.5.24422 - November 27, 2018
Enhancements
- The Java Agent adds beta support for JDK version 11
- The Java Agent adds support for WildFly version 14
- The Java Agent adds out of the box detection of the PostgreSQL v9.x JDBC driver
Resolved Issues
Key | Summary |
---|---|
JAVA-4702 | Async 2.0 Dispatch into sync servlet not reporting metrics |
JAVA-4676 | Java agent not locating AppD Global controller-info.xml file correctly |
JAVA-4629 | NPE error on logger AFastTransactionExitPointInterceptor and JDBCExitCall as part of backend instrumentation for particular oracle backend monitoring scenario |
JAVA-4625 | ConcurrentModificationException thrown while resolving Transaction |
JAVA-4618 | Cleanup EUM related code from java agent |
JAVA-4612 | Not able to set socket-enabled flag from UI |
JAVA-4607 | [sensitive-message-filter] Debug logs showing up the original log message instead of redacting it. |
JAVA-4565 | Implementation and add unit tests for Postgres driver version 9.4.1207 and above |
JAVA-4544 | Message removed from BT snapshot when Sensitive data filter on exception message rule defined instead filtering sensitive data when exception message have special quotes/characters |
JAVA-4463 | Exceptions in Agent logs with JDK11, Upgrade to ASM 7 |
JAVA-4398 | HTTP Backend calls from TIBCO BusinessWorks 5.x are not getting detected. |
JAVA-4321 | Configurations for Custom Backend not handled by Java Agent |
JAVA-4306 | DB2 backends are not showing with host and port as identifying properties |
JAVA-4267 | NPE should be handled gracefully in JDBCCurrentExitCall |
JAVA-4224 | Error in metrics on Kafka Consumer |
JAVA-4019 | TomcatResponseResetInterceptor is calling deprecated API reflectively |
JAVA-4016 | Exclude rule is not working |
JAVA-3305 | URL filters should apply to inbound BT URLs as well as backend URLs |
4.5.4 Updates
Version 4.5.4.24355 – October 25, 2018
Enhancements
- The Java Agent adds support for Vert.x Core 3.5.0 – 3.5.3
- The Java Agent adds support for Play2.6 with Akka HTTP server implementation for both Java and Scala
- The Java Agent now certified for use with WebSphere Liberty edition
- The Java Agent adds support for Correlating EUM snapshots with Akka Business Transaction activity
- The Java Agent adds support for automatic correlation of Kafka Producers and Consumer with Network Visibility
- The Java Agent adds SQL data collector for batch statements
- The Java Agent is now certified against Tomcat v9
- Disabled default capture of per BT block and wait time, and added a new agent property enable-bt-block-wait-time-monitoring in agent properties
Resolved Issues
Key | Summary |
---|---|
JAVA-2255/4385 | Provide authentication credentials when needed for JMX attribute invocation |
JAVA-4273 | Change token object for apache blocking connection pool |
JAVA-4018 | Exception while instrumenting Spray |
JAVA-4166 | When the socket event queue is full, it should log a warning instead of error |
JAVA-4291 | Synchronize registration/creation of new resource pools |
JAVA-4307 | Handling exception for publishing object details in live mode for objects not implementing toString |
Java-4281 | Support for changed CPU reporting in IBM J9 SR5 |
JAVA-4288 | Memory pool: Do not report 0 for the maximum in the absence of a fixed pool maximum limit |
JAVA-4358 | Modify exit call detail to store prepared query statement |
JAVA-4387 | Fix NPE in HTTPDataGathererUtil |
JAVA-4283 | Support new GC metric reporting in IBM J9 SR5 |
JAVA-4321 | Configurations for Custom Backend not handled by Java Agent |
4.5.2 Updates
Version 4.5.2.23891 – September 24, 2018
Enhancements
- The Java Agent adds support for redacting sensitive HTTP Cookies/Headers values
- The Java Agent adds exit ART support for Jetty 8
- The Java Agent adds exit ART support for Jetty 9
- The Java Agent adds support for Oracle Java SE Edition version 10
- The Java Agent adds support for EUM Correlation for Vertx Core 3.3.x, 3.4.x
- Added a new system property appdynamics.low.entropy=true
- Added a new API to mark in-flight BTs as in error.
Resolved Issues
Key | Summary |
---|---|
JAVA-3941 | OIT feature not working on JDK9 and JDK10 because of the absence of tools.jar |
JAVA-4020 | 4.5 agent does not start with WebLogic 10.0 (log4j) |
JAVA-4039 | Lower priority BT getting preference |
JAVA-4052 | JDBC backend identification property URL should be equal to the connection string URL specified in the code |
JAVA-4070 | Add instrumentation for Executor.execute into agent |
JAVA-4071 | CPU time overhead on the controller |
JAVA-4077 | Gracefully handle non-DOMSource payload to Spring WebService |
JAVA‑4087 | Make SQL DataCollector configuration case insensitive |
JAVA-4090 | Support for Apache blocking IO connection pool |
JAVA-4091 | SpringWSRequestReflectorPost2dot0 should not use "name" field of a class |
JAVA-4094 | Add zero entropy option for SecureRandom bootstrap |
JAVA-4095 | Java agent is not working with Oracle Java SE Standard Edition 10 |
JAVA-4119 | Apply new async instrumentation style on/off switch to existing interceptors |
JAVA-4170 | Agent sending blank JMS name |
JAVA-4189 | Regex for QueryParams for data masking |
JAVA-4225 | Support for Apache blocking IO connection pool not working for org.apache.http.pool.PoolEntryFuture |
4.5.1 Updates
Version 4.5.1.23676 – August 23, 2018
Enhancements
- The Java Agent adds response time measurement for Vert.x Entry.
- The Java Agent adds support for redacting sensitive HTTP Cookie/Header values.
- The Java Agent adds support for redacting query parameters from URLs in snapshots.
- The Java Agent adds BT correlation across the spring cloud connector transport and event bus for the Axon framework.
- The Java Agent adds response time measurement for Mule Entry.
- The Java Agent adds response time measurement for Spray Exit.
- The Java Agent adds response time measurement for Spray Entry.
Resolved Issues
Key | Summary |
---|---|
JAVA-3992 | EUM Correlation not working for Play 2.4.7 Framework App in Java |
JAVA-3988 | EUM Correlation not working for Play 2.5.4 Framework App in Scala |
JAVA‑3962 | Improved handling of relative paths in jar manifest classpath entries |
JAVA-3897 | DocumentParseInterceptor should report exceptions only when used in naming |
JAVA-3846 | Enable EUM Correlation for Mule ESB in 4.4.x agent |
JAVA-3830 | TomcatVersionDeterminer index out of bounds in WSO2 |
JAVA-3891 | Correct AsyncAppenderBase fork-config exclude configuration in app-agent-config.xml |
JAVA-3995 | Do not disable BCIFixer on IBM JVM |
JAVA-3984 | TransactionMonitor.getBTContext() returns null if the agent is disabled |
JAVA-3926 | Improve OverFlow BT handling in BT Registry |
JAVA-3887 | Downstream Java Agent fails to correlate BTs in cross-app case |
JAVA-3867 | Report E2E metrics at Node, Tier, Application level in addition to BT level |
JAVA-3846 | Enable EUM Correlation for Mule ESB in 4.4.x agent |
4.5.0 Updates
July 11, 2018
Enhancements
- Added a node property jmx-query-timeout-limit to override ignoring JMX rules/attributes.
- The Java Agent supports transaction detection, naming, and data collector instrumentation for the IBM BPM product.
- The Java Agent supports for Correlation for Kafka.
- The Java Agent adds support for Eclipse Vert.x version 3.5.
- The Java Agent adds platform support for Oracle JDK version 10, OpenJDK version 10, JRockit version 1.6, IBM JVM version 1.8, and Azul Zulu version 10.
- The Java Agent adds support for Java Servlet API version 3.0.
- The Java agent adds support for Log4j 2.
- The Java Agent handles the Exit Point Identification of the Distributed Command Bus for Axon 3.x.
- The Java Agent now reports Business Transaction and Backend timings reflecting the black-box HTTP response times for supported asynchronous entries and exits.
- The Java Agent now reports errors that occur on asynchronous threads.
The Java Agent now correlates an increased number of out of the box backends with the Network Visibility product.
The Java Agent added out of the box instrumentation for the JAX-RS client reactive API.
The Java Agent added out of the box instrumentation for version 4 of the spring framework.
Resolved Issues
Key | Summary |
---|---|
JAVA-3086 | Error creating custom JMX rules which are inside a composite data structure(array) |
JAVA-3088 | Limit error references held when agent not connected to Controller |
JAVA-3161 | StackOverflowError in CallGraphBuilder.fixChildrenWaitBlockTime(CallElement e) |
JAVA-3190 | NPE thrown when trying to get Destination type (JMS) and disabling interceptor |
JAVA-3214 | AppAgent 4.4.x version does not start with JDK 1.9 as JRE runtime version |
JAVA-3485 | WebSpherePMI Domain MBeans are not supporting instance identifier customization |
JAVA-3598 | NPE Error with VERTX API version 3.3.0 and java agent 4.4.1 |
JAVA-3809 | Correlation not working for HTTP client |
JAVA-3819 | Memory leak when adding EUM HTTP header in NettyHttpResponse |
JAVA-3846 | Enable EUM Correlation for Mule ESB in 4.4.x agent |
Known Issues
- If you enable Kafka consumer entry points for the Java Agent, the flow map shows the data flow in reverse from the node to the Kafka cluster.