Enable Autocomplete and Search for Java

이 페이지는 아직 한국어로 제공되지 않으며 번역 작업 중입니다. 번역에 관한 질문이나 의견이 있으시면 언제든지 저희에게 연락해 주십시오.
Join the Beta!

Autocomplete and search are in public beta.

Requirements

Installation

Run your service with Dynamic Instrumentation enabled, and additionally enable autocomplete and search:

  1. Set the -Ddd.symbol.database.upload.enabled=true flag or the DD_SYMBOL_DATABASE_UPLOAD_ENABLED=true environment variable.
  2. Specify the dd.service and dd.version Unified Service Tags.

Example service startup command:

java \
    -javaagent:dd-java-agent.jar \
    -Ddd.service=<YOUR_SERVICE> \
    -Ddd.env=<YOUR_ENVIRONMENT> \
    -Ddd.version=<YOUR_VERSION> \
    -Ddd.dynamic.instrumentation.enabled=true \
    -Ddd.symbol.database.upload.enabled=true \
    -jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>
export DD_SERVICE=<YOUR_SERVICE>
export DD_ENV=<YOUR_ENV>
export DD_VERSION=<YOUR_VERSION>
export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
export DD_SYMBOL_DATABASE_UPLOAD_ENABLED=true
java \
    -javaagent:dd-java-agent.jar \
    -jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>

Note: The -javaagent argument needs to be before -jar, adding it as a JVM option rather than an application argument. For more information, see the Oracle documentation:

# Correct:
$ java -javaagent:dd-java-agent.jar ... -jar my-service.jar -more-flags

# Incorrect:
$ java -jar my-service.jar -javaagent:dd-java-agent.jar ...
  1. After starting your service with Dynamic Instrumentation and autocomplete and search enabled, you can use Dynamic Instrumentation’s IDE-like features on the APM > Dynamic Instrumentation page.

Additional configuration

Third party detection

If autocomplete suggestions do not appear for your package or module, it may be incorrectly recognized as third-party code. The autocomplete and search features use a heuristic to filter out third-party code, which can sometimes lead to accidental misclassification.

To ensure that your code is properly recognized and to enable accurate autocomplete and search functionality, you can configure the third-party detection settings using the following options:

export DD_THIRD_PARTY_EXCLUDES=<LIST_OF_USER_CODE_PACKAGE_PREFIXES>
export DD_THIRD_PARTY_INCLUDES=<LIST_OF_ADDITIONAL_THIRD_PARTY_PACKAGE_PREFIXES>

or:

  -Ddd.third.party.excludes=<LIST_OF_USER_CODE_PACKAGE_PREFIXES> \
  -Ddd.third.party.includes=<LIST_OF_ADDITIONAL_THIRD_PARTY_PACKAGE_PREFIXES> \

Where a list means a comma separated list of package prefixes, for example

export DD_THIRD_PARTY_EXCLUDES=com.mycompany,io.mycompany