{"id":14977594,"url":"https://github.com/opentracing-contrib/java-specialagent","last_synced_at":"2025-09-22T03:48:19.103Z","repository":{"id":40744689,"uuid":"155277206","full_name":"opentracing-contrib/java-specialagent","owner":"opentracing-contrib","description":"Automatic instrumentation for 3rd-party libraries in Java applications with OpenTracing.","archived":false,"fork":false,"pushed_at":"2021-10-11T22:14:25.000Z","size":9611,"stargazers_count":186,"open_issues_count":43,"forks_count":44,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-08-12T14:14:57.749Z","etag":null,"topics":["agent","aws","bytebuddy","camel","cassandra","concurrent","elasticsearch","instrumentation","java","jdbc","jms","kafka-client","mongodb-driver","okhttp","opentracing","rxjava2","specialagent","spring","spring-boot","tracing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opentracing-contrib.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-29T20:31:40.000Z","updated_at":"2025-05-22T03:36:12.000Z","dependencies_parsed_at":"2022-07-29T08:00:01.090Z","dependency_job_id":null,"html_url":"https://github.com/opentracing-contrib/java-specialagent","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/opentracing-contrib/java-specialagent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentracing-contrib%2Fjava-specialagent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentracing-contrib%2Fjava-specialagent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentracing-contrib%2Fjava-specialagent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentracing-contrib%2Fjava-specialagent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opentracing-contrib","download_url":"https://codeload.github.com/opentracing-contrib/java-specialagent/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentracing-contrib%2Fjava-specialagent/sbom","scorecard":{"id":710620,"data":{"date":"2025-08-11","repo":{"name":"github.com/opentracing-contrib/java-specialagent","commit":"6cea04f0d7cf44d882e8c7a93b5031256cdddb91"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 8/16 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 23 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"383 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-78wr-2p64-hpwj","Warn: Project is vulnerable to: GHSA-gwrp-pvrq-jmwv","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-rhgr-952r-6p8q","Warn: Project is vulnerable to: GHSA-2f88-5hg8-9x2x","Warn: Project is vulnerable to: GHSA-hfg5-xpvw-c9x4","Warn: Project is vulnerable to: GHSA-cm59-pr5q-cw85","Warn: Project is vulnerable to: GHSA-rc42-6c7j-7h5r","Warn: Project is vulnerable to: GHSA-xf96-w227-r7c4","Warn: Project is vulnerable to: GHSA-36p3-wjmg-h94x","Warn: Project is vulnerable to: GHSA-hh26-6xwr-ggv7","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: GHSA-g5mm-vmx4-3rg7","Warn: Project is vulnerable to: GHSA-4487-x383-qpph","Warn: Project is vulnerable to: GHSA-f26x-pr96-vw86","Warn: Project is vulnerable to: GHSA-ffvq-7w96-97p7","Warn: Project is vulnerable to: GHSA-g8hw-794c-4j9g","Warn: Project is vulnerable to: GHSA-rcpf-vj53-7h2m","Warn: Project is vulnerable to: GHSA-558x-2xjg-6232","Warn: Project is vulnerable to: GHSA-564r-hj7v-mcr5","Warn: Project is vulnerable to: GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: GHSA-wxqc-pxw9-g2p8","Warn: Project is vulnerable to: GHSA-mr95-9rr4-668f","Warn: Project is vulnerable to: GHSA-9qgc-p27w-3hjg","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GHSA-7r82-7xv7-xcpj","Warn: Project is vulnerable to: GHSA-9vjp-v76f-g363","Warn: Project is vulnerable to: GHSA-grg4-wf29-r9vv","Warn: Project is vulnerable to: GHSA-269q-hmxg-m83q","Warn: Project is vulnerable to: GHSA-5jpm-x58v-624v","Warn: Project is vulnerable to: GHSA-5mcr-gq6c-3hq2","Warn: Project is vulnerable to: GHSA-cqqj-4p63-rrmm","Warn: Project is vulnerable to: GHSA-wx5j-54mm-rqqq","Warn: Project is vulnerable to: GHSA-389x-839f-4rhx","Warn: Project is vulnerable to: GHSA-xq3w-v528-46rv","Warn: Project is vulnerable to: GHSA-6mjq-h674-j845","Warn: Project is vulnerable to: GHSA-mm9x-g8pc-w292","Warn: Project is vulnerable to: GHSA-p2v9-g2qv-p635","Warn: Project is vulnerable to: GHSA-mfj5-cf8g-g2fv","Warn: Project is vulnerable to: GHSA-mvr2-9pj6-7w5j","Warn: Project is vulnerable to: GHSA-rv63-gqm8-9w8q","Warn: Project is vulnerable to: GHSA-269g-pwp5-87pp","Warn: Project is vulnerable to: GHSA-4p6w-m9wc-c9c9","Warn: Project is vulnerable to: GHSA-q5r4-cfpx-h6fh","Warn: Project is vulnerable to: GHSA-wmcc-9vch-jmx4","Warn: Project is vulnerable to: GHSA-rj7p-rfgp-852x","Warn: Project is vulnerable to: GHSA-vx85-mj8c-4qm6","Warn: Project is vulnerable to: GHSA-wjxj-f8rg-99wx","Warn: Project is vulnerable to: GHSA-c27h-mcmw-48hv","Warn: Project is vulnerable to: GHSA-r6j9-8759-g62w","Warn: Project is vulnerable to: GHSA-9h6p-92jq-888x","Warn: Project is vulnerable to: GHSA-55g7-9cwv-5qfv","Warn: Project is vulnerable to: GHSA-fjpj-2g6w-x25r","Warn: Project is vulnerable to: GHSA-pqr6-cmr2-h8hf","Warn: Project is vulnerable to: GHSA-qcwq-55hx-v3vh","Warn: Project is vulnerable to: GHSA-3mc7-4q67-w48m","Warn: Project is vulnerable to: GHSA-98wm-3w3q-mw94","Warn: Project is vulnerable to: GHSA-9w3m-gqgf-c4p9","Warn: Project is vulnerable to: GHSA-c4r9-r8fh-9vj2","Warn: Project is vulnerable to: GHSA-hhhw-99gj-p3c3","Warn: Project is vulnerable to: GHSA-mjmj-j48q-9wg2","Warn: Project is vulnerable to: GHSA-rvwf-54qp-4r6v","Warn: Project is vulnerable to: GHSA-w37g-rhq8-7m4j","Warn: Project is vulnerable to: GHSA-vmfg-rjjm-rjrj","Warn: Project is vulnerable to: GHSA-vmq6-5m68-f53m","Warn: Project is vulnerable to: GHSA-668q-qrv7-99fm","Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-24ww-mc5x-xc43","Warn: Project is vulnerable to: GHSA-2vxm-vp4c-fjfw","Warn: Project is vulnerable to: GHSA-8ffc-79xg-29w8","Warn: Project is vulnerable to: GHSA-cfh5-3ghh-wfjx","Warn: Project is vulnerable to: GHSA-fmj5-wv96-r2ch","Warn: Project is vulnerable to: GHSA-22wj-vf5f-wrvj","Warn: Project is vulnerable to: GHSA-45hx-wfhj-473x","Warn: Project is vulnerable to: GHSA-7rpj-hg47-cx62","Warn: Project is vulnerable to: GHSA-h376-j262-vhq6","Warn: Project is vulnerable to: GHSA-3f7h-mf4q-vrm4","Warn: Project is vulnerable to: GHSA-36wv-v2qp-v4g4","Warn: Project is vulnerable to: GHSA-3w37-5p3p-jv92","Warn: Project is vulnerable to: GHSA-fh5r-crhr-qrrq","Warn: Project is vulnerable to: GHSA-qmgx-j96g-4428","Warn: Project is vulnerable to: GHSA-x3x3-qwjq-8gj4","Warn: Project is vulnerable to: GHSA-ffm7-7r8g-77xm","Warn: Project is vulnerable to: GHSA-cj7v-27pg-wf7q","Warn: Project is vulnerable to: GHSA-hmr7-m48g-48f6","Warn: Project is vulnerable to: GHSA-qh8g-58pp-2wxh","Warn: Project is vulnerable to: GHSA-26vr-8j45-3r4w","Warn: Project is vulnerable to: GHSA-86wm-rrjm-8wh8","Warn: Project is vulnerable to: GHSA-g8m5-722r-8whq","Warn: Project is vulnerable to: GHSA-m394-8rww-3jr7","Warn: Project is vulnerable to: GHSA-m6cp-vxjx-65j6","Warn: Project is vulnerable to: GHSA-p26g-97m4-6q7c","Warn: Project is vulnerable to: GHSA-q4rv-gq96-w7c5","Warn: Project is vulnerable to: GHSA-qw69-rqj8-6qw8","Warn: Project is vulnerable to: GHSA-5mc7-m686-p6jg","Warn: Project is vulnerable to: GHSA-gm48-83x4-84jg","Warn: Project is vulnerable to: GHSA-gw4j-4229-q4px","Warn: Project is vulnerable to: GHSA-qmfc-6www-fjqw","Warn: Project is vulnerable to: GHSA-v2rg-8cwr-75g8","Warn: Project is vulnerable to: GHSA-f256-j965-7f32","Warn: Project is vulnerable to: GHSA-p979-4mfw-53vg","Warn: Project is vulnerable to: GHSA-wm47-8v5p-wjpj","Warn: Project is vulnerable to: GHSA-xfv3-rrfm-f2rv","Warn: Project is vulnerable to: GHSA-4jrv-ppp4-jm57","Warn: Project is vulnerable to: GHSA-5qwq-g2hx-r6f7","Warn: Project is vulnerable to: GHSA-7wfc-x4f7-gg2x","Warn: Project is vulnerable to: GHSA-933g-v89r-x8pf","Warn: Project is vulnerable to: GHSA-cpx9-4rwv-486v","Warn: Project is vulnerable to: GHSA-q897-9jxf-jg9r","Warn: Project is vulnerable to: GHSA-qvm7-23cj-437v","Warn: Project is vulnerable to: GHSA-r577-4hq7-73qh","Warn: Project is vulnerable to: GHSA-vp5x-3v8r-qprw","Warn: Project is vulnerable to: GHSA-whww-v56c-cgv2","Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-xmc8-26q4-qjhx","Warn: Project is vulnerable to: GHSA-7rjr-3q55-vv33","Warn: Project is vulnerable to: GHSA-8489-44mv-ggj8","Warn: Project is vulnerable to: GHSA-jfh8-c2jp-5v3q","Warn: Project is vulnerable to: GHSA-p6xc-xr62-6r2g","Warn: Project is vulnerable to: GHSA-vwqq-5vrc-xw9h","Warn: Project is vulnerable to: GHSA-2cqf-6xv9-f22w","Warn: Project is vulnerable to: GHSA-2hjr-vmf3-xwvp","Warn: Project is vulnerable to: GHSA-3393-hvrj-w7v3","Warn: Project is vulnerable to: GHSA-5v8f-xx9m-wj44","Warn: Project is vulnerable to: GHSA-62ww-4p3p-7fhj","Warn: Project is vulnerable to: GHSA-c77j-p484-h84m","Warn: Project is vulnerable to: GHSA-cqgv-256r-m9r8","Warn: Project is vulnerable to: GHSA-fj32-6v7m-57pg","Warn: Project is vulnerable to: GHSA-g9fw-9x87-rmrj","Warn: Project is vulnerable to: GHSA-hr65-qq6p-87r4","Warn: Project is vulnerable to: GHSA-jgx4-7v3v-vwfm","Warn: Project is vulnerable to: GHSA-jqm6-m3j3-8gg9","Warn: Project is vulnerable to: GHSA-r9fv-qpm9-rj4g","Warn: Project is vulnerable to: GHSA-vpqm-88c4-x4cv","Warn: Project is vulnerable to: GHSA-2x83-r56g-cv47","Warn: Project is vulnerable to: GHSA-gw85-4gmf-m7rh","Warn: Project is vulnerable to: GHSA-4gg5-vx3j-xwc7","Warn: Project is vulnerable to: GHSA-735f-pc8j-v9w8","Warn: Project is vulnerable to: GHSA-77rm-9x9h-xj3g","Warn: Project is vulnerable to: GHSA-g5ww-5jh7-63cx","Warn: Project is vulnerable to: GHSA-h4h5-3hr4-j3g2","Warn: Project is vulnerable to: GHSA-wrvw-hg22-4m67","Warn: Project is vulnerable to: GHSA-prj3-ccx8-p6x4","Warn: Project is vulnerable to: GHSA-xpw8-rcwv-8f8p","Warn: Project is vulnerable to: GHSA-5gj6-62g7-vmgf","Warn: Project is vulnerable to: GHSA-8h4x-xvjp-vf99","Warn: Project is vulnerable to: GHSA-c5hg-mr8r-f6jp","Warn: Project is vulnerable to: GHSA-c5vj-wp4v-mmvx","Warn: Project is vulnerable to: GHSA-xh6m-7cr7-xx66","Warn: Project is vulnerable to: GHSA-pvp8-3xj6-8c6x","Warn: Project is vulnerable to: GHSA-27xj-rqx5-2255","Warn: Project is vulnerable to: GHSA-288c-cq4h-88gq","Warn: Project is vulnerable to: GHSA-4w82-r329-3q67","Warn: Project is vulnerable to: GHSA-57j2-w4cx-62h2","Warn: Project is vulnerable to: GHSA-58pp-9c76-5625","Warn: Project is vulnerable to: GHSA-5949-rw7g-wx7w","Warn: Project is vulnerable to: GHSA-5p34-5m6p-p58g","Warn: Project is vulnerable to: GHSA-5r5r-6hpj-8gg9","Warn: Project is vulnerable to: GHSA-5ww9-j83m-q7qx","Warn: Project is vulnerable to: GHSA-6fpp-rgj9-8rwc","Warn: Project is vulnerable to: GHSA-758m-v56v-grj4","Warn: Project is vulnerable to: GHSA-85cw-hj65-qqv9","Warn: Project is vulnerable to: GHSA-89qr-369f-5m5x","Warn: Project is vulnerable to: GHSA-8c4j-34r4-xr8g","Warn: Project is vulnerable to: GHSA-8w26-6f25-cm9x","Warn: Project is vulnerable to: GHSA-95cm-88f5-f2c7","Warn: Project is vulnerable to: GHSA-9gph-22xh-8x98","Warn: Project is vulnerable to: GHSA-9m6f-7xcq-8vf8","Warn: Project is vulnerable to: GHSA-9vvp-fxw6-jcxr","Warn: Project is vulnerable to: GHSA-c265-37vj-cwcc","Warn: Project is vulnerable to: GHSA-c2q3-4qrh-fm48","Warn: Project is vulnerable to: GHSA-cf6r-3wgc-h863","Warn: Project is vulnerable to: GHSA-cmfg-87vq-g5g4","Warn: Project is vulnerable to: GHSA-cvm9-fjm9-3572","Warn: Project is vulnerable to: GHSA-f3j5-rmmp-3fc5","Warn: Project is vulnerable to: GHSA-f9xh-2qgp-cq57","Warn: Project is vulnerable to: GHSA-fmmc-742q-jg75","Warn: Project is vulnerable to: GHSA-fqwf-pjwf-7vqv","Warn: Project is vulnerable to: GHSA-gjmw-vf9h-g25v","Warn: Project is vulnerable to: GHSA-gwp4-hfv6-p7hw","Warn: Project is vulnerable to: GHSA-gww7-p5w4-wrfv","Warn: Project is vulnerable to: GHSA-h3cw-g4mq-c5x2","Warn: Project is vulnerable to: GHSA-h4rc-386g-6m85","Warn: Project is vulnerable to: GHSA-h822-r4r5-v8jg","Warn: Project is vulnerable to: GHSA-j823-4qch-3rgm","Warn: Project is vulnerable to: GHSA-jjjh-jjxp-wpff","Warn: Project is vulnerable to: GHSA-m6x4-97wx-4q27","Warn: Project is vulnerable to: GHSA-mc6h-4qgp-37qh","Warn: Project is vulnerable to: GHSA-mph4-vhrx-mv67","Warn: Project is vulnerable to: GHSA-mx7p-6679-8g3q","Warn: Project is vulnerable to: GHSA-p43x-xfjf-5jhr","Warn: Project is vulnerable to: GHSA-q93h-jc49-78gg","Warn: Project is vulnerable to: GHSA-qjw2-hr98-qgfh","Warn: Project is vulnerable to: GHSA-qmqc-x3r4-6v39","Warn: Project is vulnerable to: GHSA-r3gr-cxrf-hg25","Warn: Project is vulnerable to: GHSA-r695-7vr9-jgc2","Warn: Project is vulnerable to: GHSA-rf6r-2c4q-2vwg","Warn: Project is vulnerable to: GHSA-rgv9-q543-rqg4","Warn: Project is vulnerable to: GHSA-rpr3-cw39-3pxh","Warn: Project is vulnerable to: GHSA-v3xw-c963-f5hc","Warn: Project is vulnerable to: GHSA-v585-23hc-c647","Warn: Project is vulnerable to: GHSA-vfqx-33qm-g869","Warn: Project is vulnerable to: GHSA-wh8g-3j2c-rqj5","Warn: Project is vulnerable to: GHSA-crg9-44h2-xw35","Warn: Project is vulnerable to: GHSA-whxr-3p84-rf3c","Warn: Project is vulnerable to: GHSA-6phf-73q6-gh87","Warn: Project is vulnerable to: GHSA-p66x-2cv9-qq3v","Warn: Project is vulnerable to: GHSA-wxr5-93ph-8wr9","Warn: Project is vulnerable to: GHSA-q9g8-9hpp-xc82","Warn: Project is vulnerable to: GHSA-gf8c-j759-86mg","Warn: Project is vulnerable to: GHSA-pr38-qpxm-g88x","Warn: Project is vulnerable to: GHSA-3w85-5p9g-h334","Warn: Project is vulnerable to: GHSA-cv6r-h2fm-pvrp","Warn: Project is vulnerable to: GHSA-7qx4-pp76-vrqh","Warn: Project is vulnerable to: GHSA-9w38-p64v-xpmv","Warn: Project is vulnerable to: GHSA-xj57-8qj4-c4m6","Warn: Project is vulnerable to: GHSA-xjp4-hw94-mvp5","Warn: Project is vulnerable to: GHSA-599f-7c49-w659","Warn: Project is vulnerable to: GHSA-4gq5-ch57-c2mg","Warn: Project is vulnerable to: GHSA-645p-88qh-w398","Warn: Project is vulnerable to: GHSA-6wqp-v4v6-c87c","Warn: Project is vulnerable to: GHSA-9mxf-g3x6-wv74","Warn: Project is vulnerable to: GHSA-c8hm-7hpq-7jhg","Warn: Project is vulnerable to: GHSA-cggj-fvv3-cqwv","Warn: Project is vulnerable to: GHSA-cjjf-94ff-43w7","Warn: Project is vulnerable to: GHSA-f9hv-mg5h-xcw9","Warn: Project is vulnerable to: GHSA-mx9v-gmh4-mgqw","Warn: Project is vulnerable to: GHSA-qr7j-h6gg-jmgc","Warn: Project is vulnerable to: GHSA-x2w5-5m2g-7h5m","Warn: Project is vulnerable to: GHSA-p7c9-8xx8-h74f","Warn: Project is vulnerable to: GHSA-2hw2-62cp-p9p7","Warn: Project is vulnerable to: GHSA-7286-pgfv-vxvh","Warn: Project is vulnerable to: GHSA-4g9r-vxhx-9pgx","Warn: Project is vulnerable to: GHSA-7hfm-57qf-j43q","Warn: Project is vulnerable to: GHSA-crv7-7245-f45f","Warn: Project is vulnerable to: GHSA-mc84-pj99-q6hh","Warn: Project is vulnerable to: GHSA-xqfj-vm6h-2x34","Warn: Project is vulnerable to: GHSA-4cx2-fc23-5wg6","Warn: Project is vulnerable to: GHSA-6xx3-rg99-gc3p","Warn: Project is vulnerable to: GHSA-72m5-fvvv-55m6","Warn: Project is vulnerable to: GHSA-8xfc-gm6g-vgpv","Warn: Project is vulnerable to: GHSA-hr8g-6v94-x4m9","Warn: Project is vulnerable to: GHSA-v435-xc8x-wvr9","Warn: Project is vulnerable to: GHSA-wjxj-5m7g-mg7q","Warn: Project is vulnerable to: GHSA-g3wg-6mcf-8jj6","Warn: Project is vulnerable to: GHSA-58qw-p7qm-5rvh","Warn: Project is vulnerable to: GHSA-w33c-445m-f8w7","Warn: Project is vulnerable to: GHSA-h592-38cm-4ggp","Warn: Project is vulnerable to: GHSA-rfx6-vp9g-rh7v","Warn: Project is vulnerable to: GHSA-w3f4-3q6j-rh82","Warn: Project is vulnerable to: GHSA-h4x4-5qp2-wp46","Warn: Project is vulnerable to: GHSA-cf8j-64h9-6q58","Warn: Project is vulnerable to: GHSA-p9p4-97g9-wcrh","Warn: Project is vulnerable to: GHSA-qxxx-2pp7-5hmx","Warn: Project is vulnerable to: GHSA-cghx-9gcr-r42x","Warn: Project is vulnerable to: GHSA-m8wh-mqgf-rr8g","Warn: Project is vulnerable to: GHSA-r7pg-v2c8-mfg3","Warn: Project is vulnerable to: GHSA-rhrv-645h-fjfh","Warn: Project is vulnerable to: GHSA-gxq5-79m2-gvvq","Warn: Project is vulnerable to: GHSA-hrmr-f5m6-m9pq","Warn: Project is vulnerable to: GHSA-j3qw-g67q-7m64","Warn: Project is vulnerable to: GHSA-jvf3-mfxv-jcqr","Warn: Project is vulnerable to: GHSA-74mc-g2xv-pch2","Warn: Project is vulnerable to: GHSA-83q5-whqp-r8jr","Warn: Project is vulnerable to: GHSA-6x9x-8qw9-9pp6","Warn: Project is vulnerable to: GHSA-7vx9-xjhr-rw6h","Warn: Project is vulnerable to: GHSA-84q7-p226-4x5w","Warn: Project is vulnerable to: GHSA-9rgv-h7x4-qw8g","Warn: Project is vulnerable to: GHSA-h2f4-v4c4-6wx4","Warn: Project is vulnerable to: GHSA-r28m-g6j9-r2h5","Warn: Project is vulnerable to: GHSA-vgg8-72f2-qm23","Warn: Project is vulnerable to: GHSA-wfcc-pff6-rgc5","Warn: Project is vulnerable to: GHSA-xc67-hjx6-cgg6","Warn: Project is vulnerable to: GHSA-3gh6-v5v9-6v9j","Warn: Project is vulnerable to: GHSA-gwcr-j4wh-j3cq","Warn: Project is vulnerable to: GHSA-j26w-f9rq-mr2q","Warn: Project is vulnerable to: GHSA-c2x9-vw5h-39vc","Warn: Project is vulnerable to: GHSA-jg2g-4rjg-cmqh","Warn: Project is vulnerable to: GHSA-xp2r-g8qq-44hh","Warn: Project is vulnerable to: GHSA-mm8h-8587-p46h","Warn: Project is vulnerable to: GHSA-w4g2-9hj6-5472","Warn: Project is vulnerable to: GHSA-97xg-phpr-rg8q","Warn: Project is vulnerable to: GHSA-hc33-32vw-rpp9","Warn: Project is vulnerable to: GHSA-mvqp-q37c-wf9j","Warn: Project is vulnerable to: GHSA-r2wf-q3x4-hrv9","Warn: Project is vulnerable to: GHSA-w6rq-6h34-vh7q","Warn: Project is vulnerable to: GHSA-4hvc-qwr2-f8rv","Warn: Project is vulnerable to: GHSA-ghgj-3xqr-6jfm","Warn: Project is vulnerable to: GHSA-qxp4-27vx-xmm3","Warn: Project is vulnerable to: GHSA-2rvv-w9r2-rg7m","Warn: Project is vulnerable to: GHSA-3vx3-xf6q-r5xp","Warn: Project is vulnerable to: GHSA-46j3-r4pj-4835","Warn: Project is vulnerable to: GHSA-5q99-f34m-67gc","Warn: Project is vulnerable to: GHSA-6rxj-58jh-436r","Warn: Project is vulnerable to: GHSA-8vmx-qmch-mpqg","Warn: Project is vulnerable to: GHSA-9xcj-c8cr-8c3c","Warn: Project is vulnerable to: GHSA-c9hw-wf7x-jp9j","Warn: Project is vulnerable to: GHSA-hh3j-x4mc-g48r","Warn: Project is vulnerable to: GHSA-jgwr-3qm3-26f3","Warn: Project is vulnerable to: GHSA-jjpq-gp5q-8q6w","Warn: Project is vulnerable to: GHSA-jx6h-3fjx-cgv5","Warn: Project is vulnerable to: GHSA-m59c-jpc8-m2x4","Warn: Project is vulnerable to: GHSA-pjfr-qf3p-3q25","Warn: Project is vulnerable to: GHSA-qxf4-chvg-4r8r","Warn: Project is vulnerable to: GHSA-r4x2-3cq5-hqvp","Warn: Project is vulnerable to: GHSA-76qr-mmh8-cp8f","Warn: Project is vulnerable to: GHSA-89gc-6cw6-4vch","Warn: Project is vulnerable to: GHSA-6pcc-3rfx-4gpm","Warn: Project is vulnerable to: GHSA-hwj3-m3p6-hj38","Warn: Project is vulnerable to: GHSA-8grg-q944-cch5","Warn: Project is vulnerable to: GHSA-j8jw-g6fq-mp7h","Warn: Project is vulnerable to: GHSA-5q8m-mqmx-pxp9","Warn: Project is vulnerable to: GHSA-jgmr-wrwx-mgfj","Warn: Project is vulnerable to: GHSA-xggx-fx6w-v7ch","Warn: Project is vulnerable to: GHSA-xr4v-28rm-pvgw","Warn: Project is vulnerable to: GHSA-45vg-2v73-vm62","Warn: Project is vulnerable to: GHSA-8crv-49fr-2h6j","Warn: Project is vulnerable to: GHSA-pgf9-h69p-pcgf","Warn: Project is vulnerable to: GHSA-jpv3-g4cc-6vfx","Warn: Project is vulnerable to: GHSA-m9w8-v359-9ffr","Warn: Project is vulnerable to: GHSA-3rmv-2pg5-xvqj","Warn: Project is vulnerable to: GHSA-p5hg-3xm3-gcjg","Warn: Project is vulnerable to: GHSA-rqph-vqwm-22vc","Warn: Project is vulnerable to: GHSA-3j6g-hxx5-3q26","Warn: Project is vulnerable to: GHSA-7v6m-28jr-rg84","Warn: Project is vulnerable to: GHSA-m8p2-495h-ccmh","Warn: Project is vulnerable to: GHSA-rmrm-75hp-phr2","Warn: Project is vulnerable to: GHSA-x83m-pf6f-pf9g","Warn: Project is vulnerable to: GHSA-6v73-fgf6-w5j7","Warn: Project is vulnerable to: GHSA-86qr-9vqc-pgc6","Warn: Project is vulnerable to: GHSA-2rmj-mq67-h97g","Warn: Project is vulnerable to: GHSA-2wrp-6fg6-hmc5","Warn: Project is vulnerable to: GHSA-4wrc-f8pq-fpqp","Warn: Project is vulnerable to: GHSA-9gcm-f4x3-8jpw","Warn: Project is vulnerable to: GHSA-ccgv-vj62-xf9h","Warn: Project is vulnerable to: GHSA-hgjh-9rj2-g67j","Warn: Project is vulnerable to: GHSA-v596-fwhq-8x48","Warn: Project is vulnerable to: GHSA-f866-m9mv-2xr3","Warn: Project is vulnerable to: GHSA-rhcg-rwhx-qj3j","Warn: Project is vulnerable to: GHSA-wv88-pf73-x22p","Warn: Project is vulnerable to: GHSA-6v7w-535j-rq5m","Warn: Project is vulnerable to: GHSA-g6hf-f9cq-q7w7","Warn: Project is vulnerable to: GHSA-xjrf-8x4f-43h4","Warn: Project is vulnerable to: GHSA-j52r-xc68-q8f4","Warn: Project is vulnerable to: GHSA-27hp-xhwr-wr2m","Warn: Project is vulnerable to: GHSA-5j33-cvvr-w245","Warn: Project is vulnerable to: GHSA-7w75-32cg-r6g2","Warn: Project is vulnerable to: GHSA-83qj-6fr2-vhqg","Warn: Project is vulnerable to: GHSA-fccv-jmmp-qg76","Warn: Project is vulnerable to: GHSA-g8pj-r55q-5c2v","Warn: Project is vulnerable to: GHSA-h2fw-rfh5-95r3","Warn: Project is vulnerable to: GHSA-h3gc-qfqq-6h8f","Warn: Project is vulnerable to: GHSA-hfrx-6qgj-fp6c","Warn: Project is vulnerable to: GHSA-j39c-c8hj-x4j3","Warn: Project is vulnerable to: GHSA-p22x-g9px-3945","Warn: Project is vulnerable to: GHSA-q3mw-pvr8-9ggc","Warn: Project is vulnerable to: GHSA-q4hg-rmq2-52q9","Warn: Project is vulnerable to: GHSA-qcxh-w3j9-58qr","Warn: Project is vulnerable to: GHSA-r6j3-px5g-cq3x","Warn: Project is vulnerable to: GHSA-wc4r-xq3c-5cf3","Warn: Project is vulnerable to: GHSA-wm9w-rjj3-j356","Warn: Project is vulnerable to: GHSA-v682-8vv8-vpwr","Warn: Project is vulnerable to: GHSA-8wx2-9q48-vm9r","Warn: Project is vulnerable to: GHSA-g5vr-rgqm-vf78","Warn: Project is vulnerable to: GHSA-2m8h-fgr8-2q9w","Warn: Project is vulnerable to: GHSA-8cmm-qj8g-fcp6","Warn: Project is vulnerable to: GHSA-f93f-g33r-8pcp","Warn: Project is vulnerable to: GHSA-ff7p-jqjm-v66h","Warn: Project is vulnerable to: GHSA-3p2h-wqq4-wf4h","Warn: Project is vulnerable to: GHSA-6v52-mj5r-7j2m","Warn: Project is vulnerable to: GHSA-f4qf-m5gf-8jm8","Warn: Project is vulnerable to: GHSA-ff77-26x5-69cr","Warn: Project is vulnerable to: GHSA-g2fg-mr77-6vrm","Warn: Project is vulnerable to: GHSA-xxgp-pcfc-3vgc","Warn: Project is vulnerable to: GHSA-jjfh-589g-3hjx","Warn: Project is vulnerable to: GHSA-mg83-c7gq-rv5c","Warn: Project is vulnerable to: GHSA-g5h3-w546-pj7f","Warn: Project is vulnerable to: GHSA-vwpg-f6gw-rjvf"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T08:07:28.845Z","repository_id":40744689,"created_at":"2025-08-22T08:07:28.845Z","updated_at":"2025-08-22T08:07:28.845Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276342531,"owners_count":25625581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-22T02:00:08.972Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","aws","bytebuddy","camel","cassandra","concurrent","elasticsearch","instrumentation","java","jdbc","jms","kafka-client","mongodb-driver","okhttp","opentracing","rxjava2","specialagent","spring","spring-boot","tracing"],"created_at":"2024-09-24T13:55:57.777Z","updated_at":"2025-09-22T03:48:19.068Z","avatar_url":"https://github.com/opentracing-contrib.png","language":"Java","readme":"# Java Agent for OpenTracing\n\n_NOTE: It is deprecated now.\nPlease migrate to [OpenTelemetry Instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation)._\n\n\u003e Automatically instruments 3rd-party libraries in Java applications\n\n[![Build Status](https://img.shields.io/circleci/build/gh/opentracing-contrib/java-specialagent/master)][circleci]\n[![Coverage Status](https://coveralls.io/repos/github/opentracing-contrib/java-specialagent/badge.svg?branch=master)](https://coveralls.io/github/opentracing-contrib/java-specialagent?branch=master)\n[![Javadocs](https://www.javadoc.io/badge/io.opentracing.contrib.specialagent/opentracing-specialagent.svg)](https://www.javadoc.io/doc/io.opentracing.contrib.specialagent/opentracing-specialagent)\n[![Released Version](https://img.shields.io/maven-central/v/io.opentracing.contrib.specialagent/specialagent.svg)](https://mvnrepository.com/artifact/io.opentracing.contrib.specialagent/opentracing-specialagent)\n\n## What is SpecialAgent?\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e is software that attaches to Java applications, and automatically instruments 3rd-party libraries within. The \u003cins\u003eSpecialAgent\u003c/ins\u003e uses the OpenTracing API for \u003cins\u003e[Integrations](#41-integrations)\u003c/ins\u003e that instrument 3rd-party libraries, as well as \u003cins\u003e[Trace Exporters](#42-trace-exporters)\u003c/ins\u003e that export trace data to OpenTracing \u003cins\u003e[Tracer](#61-tracer)\u003c/ins\u003e vendors. The architecture of \u003cins\u003eSpecialAgent\u003c/ins\u003e was specifically designed to include contributions from the community, whereby its platform automates the installation of OpenTracing \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e written by individual contributors. In addition to \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e, the \u003cins\u003eSpecialAgent\u003c/ins\u003e also supports \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e, which connect an instrumented runtime to OpenTracing-compliant tracer vendors, such as [LightStep][lightstep], [Wavefront][wavefront], or [Jaeger][jaeger]. Both the \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e and the \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e are decoupled from \u003cins\u003eSpecialAgent\u003c/ins\u003e -- i.e. neither need to know about \u003cins\u003eSpecialAgent\u003c/ins\u003e. At its core, the \u003cins\u003eSpecialAgent\u003c/ins\u003e is itself nothing more than an engine that abstracts the functionality for the automatic installation of \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e, and their connection to \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e. A benefit of this approach is that the \u003cins\u003eSpecialAgent\u003c/ins\u003e intrinsically embodies and encourages community involvement.\n\nBoth the \u003cins\u003e[Integrations](#41-integrations)\u003c/ins\u003e and the \u003cins\u003e[Trace Exporters](#42-trace-exporters)\u003c/ins\u003e are open-source, and are developed and supported by the OpenTracing community.\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e supports Oracle Java and OpenJDK.\n\n## Table of Contents\n\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e1 [Introduction](#1-introduction)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2 [Quick Start](#2-quick-start)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1 [Installation](#21-installation)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.1 [In Application](#211-in-application)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.1.1 [Stable](#2111-stable)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.1.2 [Development](#2112-development)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2 [For Development](#212-for-development)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2.1 \u003cins\u003e[Integrations](#2121-integrations)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2.1.1 \u003cins\u003e[Uncoupled Integrations](#21211-uncoupled-integrations)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2.1.2 \u003cins\u003e[Coupled Integrations](#21212-coupled-integrations)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2.1.3 [Development of \u003cins\u003eIntegration Rules\u003c/ins\u003e](#21213-development-of-integration-rules)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2.2 \u003cins\u003e[Trace Exporters](#2122-trace-exporters)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.1.2.2.1 \u003cins\u003e[Short Name](#21221-short-name)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.2 [Usage](#22-usage)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.2.1 \u003cins\u003e[Static Attach](#221-static-attach)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.2.2 \u003cins\u003e[Dynamic Attach](#222-dynamic-attach)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e2.2.3 \u003cins\u003e[Static Deferred Attach](#223-static-deferred-attach)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3 [Configuration](#3-configuration)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.1 [Overview](#31-overview)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.2 [Properties](#32-properties)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.2.1 [Logging](#321-logging)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.2.2 [Integration](#322-integration)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.2.3 [General](#323-general)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.3 [Selecting the \u003cins\u003eTrace Exporter\u003c/ins\u003e](#33-selecting-the-trace-exporter)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.4 [Disabling \u003cins\u003eIntegration Rules\u003c/ins\u003e](#34-disabling-integration-rules)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.4.1 [Disabling All \u003cins\u003eIntegration Rules\u003c/ins\u003e](#341-disabling-all-integration-rules)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.4.2 [Disabling (or enabling) One \u003cins\u003eIntegration Rule\u003c/ins\u003e](#342-disabling-or-enabling-one-integration-rule)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.4.3 [Disabling `AgentRule`s of an \u003cins\u003eIntegration Rule\u003c/ins\u003e](#343-disabling-agentrules-of-an-integration-rule)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.5 [Disabling \u003cins\u003eTrace Exporters\u003c/ins\u003e](#35-disabling-trace-exporters)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.6 [Including custom \u003cins\u003eIntegration Rules\u003c/ins\u003e](#36-including-custom-integration-rules)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e3.7 \u003cins\u003e[Rewritable Tracer](#37-rewritable-tracer)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e4 [Supported \u003cins\u003eIntegrations\u003c/ins\u003e and \u003cins\u003eTrace Exporters\u003c/ins\u003e](#4-supported-integrations-and-trace-exporters)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e4.1 \u003cins\u003e[Integrations](#41-integrations)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e4.2 \u003cins\u003e[Trace Exporters](#42-trace-exporters)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e4.3 [Libraries instrumented via other \u003cins\u003eIntegrations\u003c/ins\u003e](#43-libraries-instrumented-via-other-integrations)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e5 [Objectives](#5-objectives)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e5.1 [Goals](#51-goals)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e5.2 [Non-Goals](#52-non-goals)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e6 [Definitions](#6-definitions)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e6.1 \u003cins\u003e[Tracer](#61-tracer)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e6.2 \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e6.3 \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003c/samp\u003e6.4 \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e7 [Credits](#7-credits)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e8 [Contributing](#8-contributing)\u003cbr\u003e\n\u003csamp\u003e\u0026nbsp;\u0026nbsp;\u003c/samp\u003e9 [License](#9-license)\n\n## 1 Introduction\n\nThis file contains the operational instructions for the use and development of \u003cins\u003eSpecialAgent\u003c/ins\u003e.\n\n## 2 Quick Start\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e is a Java Agent that attaches to an application (either [statically or dynamically](#22-usage)). Once attached, the \u003cins\u003eSpecialAgent\u003c/ins\u003e it loads its bundled \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e, which are all enabled by default.\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e is stable -- any exception that occurs during attachment of \u003cins\u003eSpecialAgent\u003c/ins\u003e will not adversely affect the stability of the target application. It is, however, important to note that \u003cins\u003eSpecialAgent\u003c/ins\u003e bundles \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e that are developed by 3rd parties and individual contributors. We strive to assert the stability of \u003cins\u003eSpecialAgent\u003c/ins\u003e with rigorous [integration tests][circleci], yet it is still possible that the code in a bundled \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e may result in an exception that is not properly handled, which could potentially destabilize a target application.\n\n### 2.1 Installation\n\nThe Maven build of the \u003cins\u003eSpecialAgent\u003c/ins\u003e project generates 2 artifacts: **main** and **test**. These artifacts can be obtained by downloading directly from [Maven's Central Repository](https://repo1.maven.org/maven2/io/opentracing/contrib/specialagent/opentracing-specialagent/1.7.4/), or by cloning this repository and following the [Development Instructions](#212-for-development).\n\n#### 2.1.1 In Application\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e is contained in a single JAR file. This JAR file is the **main** artifact built by Maven, and bundles the \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e from [opentracing-contrib][opentracing-contrib] for which \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e have been implemented.\n\nTo use the \u003cins\u003eSpecialAgent\u003c/ins\u003e on an application, please download the [stable](#2111-stable) or [development](#2112-development) **main** artifact.\n\nThe artifact JAR can be provided to an application with the `-javaagent:${SPECIAL_AGENT_JAR}` vm argument for \u003cins\u003e[Static Attach](#221-static-attach)\u003c/ins\u003e and \u003cins\u003e[Static Deferred Attach](#223-static-deferred-attach)\u003c/ins\u003e. The artifact JAR can also be executed in standalone fashion, which requires an argument to be passed for the PID of a target process to which \u003cins\u003eSpecialAgent\u003c/ins\u003e is to \u003cins\u003e[dynamically attach](#222-dynamic-attach)\u003c/ins\u003e. Please refer to [Usage](#22-usage) section for usage instructions.\n\n##### 2.1.1.1 Stable\n\nThe latest stable release is: [1.7.4][main-release]\n\n```bash\nwget -O opentracing-specialagent-1.7.4.jar \"https://repo1.maven.org/maven2/io/opentracing/contrib/specialagent/opentracing-specialagent/1.7.4/opentracing-specialagent-1.7.4.jar\"\n```\n\n##### 2.1.1.2 Development\n\nThe latest development release is: [1.7.5-SNAPSHOT][main-snapshot]\n\n```bash\nwget -O opentracing-specialagent-1.7.5-SNAPSHOT.jar \"https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots\u0026g=io.opentracing.contrib.specialagent\u0026a=opentracing-specialagent\u0026v=LATEST\"\n```\n\n**Note**: Sometimes the web service call (in the line above) to retrieve the latest SNAPSHOT build fails to deliver the correct download. In order to work around this issue, please consider using the following command (for Linux and Mac OS):\n\n```bash\nwget -O opentracing-specialagent-1.7.5-SNAPSHOT.jar $(curl -s https://oss.sonatype.org/content/repositories/snapshots/io/opentracing/contrib/specialagent/opentracing-specialagent/1.7.5-SNAPSHOT/ | grep '\".*\\d\\.jar\"' | tail -1 | awk -F\\\" '{print $2}')\n```\n\n#### 2.1.2 For Development\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e is built in 2 passes utilizing different profiles:\n\n1. The `default` profile is used for development of \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e. It builds and runs tests for each rule, but _does not bundle the rules_ into the main JAR (i.e. `opentracing-specialagent-1.7.5-SNAPSHOT.jar`).\n\n   To run this profile:\n   ```bash\n   mvn clean install\n   ```\n\n   _**Note**: If you skip tests, the `assemble` profile will display an error stating that tests have not been run. See [Convenient One-Liners](#convenient-one-liners) for quick ways to build and package \u003cins\u003eSpecialAgent\u003c/ins\u003e_.\n\n1. The `assemble` profile is used to bundle the \u003cins\u003e[Integrations](#64-integration-rule)\u003c/ins\u003e into the main JAR (i.e. `opentracing-specialagent-1.7.5-SNAPSHOT.jar`). It builds each rule, but _does not run tests._ Once the build with the `assemble` profile is finished, the main JAR (i.e. `opentracing-specialagent-1.7.5-SNAPSHOT.jar`) will contain the built rules inside it.\n\n   _**Note**: If you do not run this step, the `opentracing-specialagent-1.7.5-SNAPSHOT.jar` from the previous step will not contain any \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e!_\n\n   _**Note**: It is important to **not** run Maven's `clean` lifecycle when executing the `assemble` profile, otherwise the \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e built in with the `default` profile will be cleared._\n\n   To run this profile:\n   ```bash\n   mvn -Dassemble install\n   ```\n\n* For a one-line build command to build \u003cins\u003eSpecialAgent\u003c/ins\u003e, its rules, run all tests, and create the `assemble` package:\n\n  ```bash\n  mvn clean install \u0026\u0026 mvn -Dassemble install\n  ```\n\n##### Convenient One-Liners\n\n1. Skipping tests when building \u003cins\u003eSpecialAgent\u003c/ins\u003e.\n\n   ```bash\n   mvn -DskipTests clean install\n   ```\n\n1. Skipping compatibility tests when building \u003cins\u003eSpecialAgent\u003c/ins\u003e rules.\n\n   ```bash\n   mvn -DskipCompatibilityTests clean install\n   ```\n\n1. Packaging \u003cins\u003eSpecialAgent\u003c/ins\u003e with rules that skipped test execution.\n\n   ```bash\n   mvn -Dassemble -DignoreMissingTestManifest install\n   ```\n\n##### 2.1.2.1 \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e supports two kinds of \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e:\n\n###### 2.1.2.1.1 \u003cins\u003eUncoupled [Integrations](#63-integration)\u003c/ins\u003e\n\n\u003cins\u003eUncoupled [Integrations](#63-integration)\u003c/ins\u003e are those that can be used _without_ \u003cins\u003eSpecialAgent\u003c/ins\u003e. These \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e are not coupled to \u003cins\u003eSpecialAgent\u003c/ins\u003e, and can be used via **manual integration** in an application.\n\n\u003cins\u003eUncoupled [Integrations](#63-integration)\u003c/ins\u003e are implemented in [opentracing-contrib][opentracing-contrib], and do not know about \u003cins\u003eSpecialAgent\u003c/ins\u003e.\n\nTo support \u003cins\u003eUncoupled [Integrations](#63-integration)\u003c/ins\u003e, \u003cins\u003eSpecialAgent\u003c/ins\u003e requires the implementation of an \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e that bridges the \u003cins\u003eUncoupled [Integrations](#63-integration)\u003c/ins\u003e to \u003cins\u003eSpecialAgent\u003c/ins\u003e's auto-instrumentation mechanism.\n\nThe implementation of \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e as \u003cins\u003euncoupled\u003c/ins\u003e is preferred, as this pattern allows users to instrument their applications manually, if so desired. However, not all 3rd-party libraries can be instrumented to allow manual integration, leaving the alternative pattern: \u003cins\u003eCoupled [Integrations](#63-integration)\u003c/ins\u003e.\n\n###### 2.1.2.1.2 \u003cins\u003eCoupled [Integrations](#63-integration)\u003c/ins\u003e\n\n\u003cins\u003eCoupled [Integrations](#63-integration)\u003c/ins\u003e are those that _can only be used with_ \u003cins\u003eSpecialAgent\u003c/ins\u003e. These \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e are coupled to \u003cins\u003eSpecialAgent\u003c/ins\u003e, and can only be used via **automatic installation** in an application.\n\n\u003cins\u003eCoupled [Integrations](#63-integration)\u003c/ins\u003e are effectively \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e that implement the full scope of the instrumentation of the 3rd-party library, and directly bridge this integration into the \u003cins\u003eSpecialAgent\u003c/ins\u003e's auto-instrumentation mechanism.\n\nThe implementation of \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e as \u003cins\u003ecoupled\u003c/ins\u003e is _discouraged_, as this pattern prohibits users from instrumenting their applications manually, if so desired. However, not all 3rd-party libraries can be instrumented to allow manual integration, leaving \u003cins\u003eCoupled [Integrations](#63-integration)\u003c/ins\u003e as the only option.\n\n###### 2.1.2.1.3 Development of \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e\n\nFor development of \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e, import the `opentracing-specialagent-api` and `test-jar` of the `opentracing-specialagent`.\n\n```xml\n\u003cproperties\u003e\n  \u003cspecial-agent-version\u003e1.7.4\u003c/special-agent-version\u003e \u003c!-- 1.7.5-SNAPSHOT --\u003e\n\u003c/properties\u003e\n...\n\u003cdependency\u003e\n  \u003c!-- Allows you to write Integration Rules for Special Agent --\u003e\n  \u003cgroupId\u003eio.opentracing.contrib.specialagent\u003c/groupId\u003e\n  \u003cartifactId\u003eopentracing-specialagent-api\u003c/artifactId\u003e\n  \u003cversion\u003e${special-agent-version}\u003c/version\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n  \u003c!-- Allows the Integration Rules to use OpenTracing API --\u003e\n  \u003cgroupId\u003eio.opentracing.contrib.specialagent\u003c/groupId\u003e\n  \u003cartifactId\u003eopentracing-adapter\u003c/artifactId\u003e\n  \u003cversion\u003e${special-agent-version}\u003c/version\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n  \u003c!-- Allows the Integration Rules be tested with SpecialAgent's `AgentRunner` --\u003e\n  \u003cgroupId\u003eio.opentracing.contrib.specialagent\u003c/groupId\u003e\n  \u003cartifactId\u003eopentracing-specialagent\u003c/artifactId\u003e\n  \u003cversion\u003e${special-agent-version}\u003c/version\u003e\n  \u003ctype\u003etest-jar\u003c/type\u003e\n  \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n  \u003c!-- Needed for JUnit tests from IDE --\u003e\n  \u003cgroupId\u003eorg.apache.maven\u003c/groupId\u003e\n  \u003cartifactId\u003emaven-model\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\nThe `test-jar` is the test artifact that contains the `AgentRunner` class, which is a JUnit runner provided for testing of the ByteBuddy auto-instrumentation rules. This JAR does not contain \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e themselves, and is only intended to be applied to the test phase of the build lifecycle of a single \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e implementation.\n\nFor direction with the development of \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e, please refer to the [`opentracing-specialagent-api`][api] module.\n\n##### 2.1.2.2 \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e\n\n\u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e integrate with the \u003cins\u003eSpecialAgent\u003c/ins\u003e via the [OpenTracing TracerResolver](https://github.com/opentracing-contrib/java-tracerresolver), which connects the \u003cins\u003eSpecialAgent\u003c/ins\u003e to a \u003cins\u003e[Tracer](#61-tracer)\u003c/ins\u003e.\n\n\u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e integrate to the \u003cins\u003eSpecialAgent\u003c/ins\u003e via the [SPI mechanism](https://docs.oracle.com/javase/tutorial/ext/basics/spi.html) defined in the [TracerResolver](https://github.com/opentracing-contrib/java-tracerresolver), and are therefore not coupled to the \u003cins\u003eSpecialAgent\u003c/ins\u003e.\n\n\u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e must be provided as \"fat JARs\" that contain the full set of all classes necessary for operation.\n\nIf the \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e JAR imports any `io.opentracing:opentracing-*` dependencies, the `io.opentracing.contrib:opentracing-tracerresolver`, or any other OpenTracing dependencies that are guaranteed to be provided by \u003cins\u003eSpecialAgent\u003c/ins\u003e, then these dependencies **MUST BE** excluded from the JAR, as well as from the dependency spec.\n\n\u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e are integrated with the \u003cins\u003eSpecialAgent\u003c/ins\u003e by specifying a dependency in the `\u003cisolatedDependencies\u003e` configuration element of the `specialagent-maven-plugin` in the [root POM][specialagent-pom]. For instance, the dependency for the [Jaeger Trace Exporter](https://github.com/opentracing-contrib/java-opentracing-jaeger-bundle) is:\n\n```xml\n\u003cisolatedDependencies\u003e\n...\n  \u003cdependency\u003e\n    \u003cgroupId\u003eio.opentracing.contrib\u003c/groupId\u003e\n    \u003cartifactId\u003ejaeger-client-bundle\u003c/artifactId\u003e\n  \u003c/dependency\u003e\n...\n\u003c/isolatedDependencies\u003e\n```\n\n###### 2.1.2.2.1 \u003cins\u003eShort Name\u003c/ins\u003e\n\nEach \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e integrated with the \u003cins\u003eSpecialAgent\u003c/ins\u003e must define a \u003cins\u003eShort Name\u003c/ins\u003e, which is a string that is used to reference the plugin with the `-Dsa.exporter=${SHORT_NAME}` system property. To provide a \u003cins\u003eShort Name\u003c/ins\u003e for the \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e, you must define a Maven property in the [root POM][specialagent-pom] with the name matching the `artifactId` of the \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e module. For instance, the \u003cins\u003eShort Name\u003c/ins\u003e for the [Jaeger Trace Exporter](https://github.com/opentracing-contrib/java-opentracing-jaeger-bundle) is defined as:\n\n```xml\n\u003cproperties\u003e\n...\n  \u003cjaeger-client-bundle\u003ejaeger\u003c/jaeger-client-bundle\u003e\n...\n\u003c/properties\u003e\n```\n\n### 2.2 Usage\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e is used by attaching to a target application. Once attached, the \u003cins\u003eSpecialAgent\u003c/ins\u003e relies on [Java’s Instrumentation mechanism](https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html) to transform the behavior of the application.\n\n\u003cins\u003eSpecialAgent\u003c/ins\u003e supports the following attach modes:\n\n| Attach Mode | Number of Required\u003cbr\u003eCommands to Attach | Plugin and Rule\u003cbr\u003eInitialization Timeline |\n|:-|:-:|:-:|\n| \u003cins\u003e[Static Attach](#221-static-attach)\u003c/ins\u003e\u003cbr\u003e\u0026nbsp; | 1 (sync)\u003cbr\u003e\u0026nbsp; | Before app start\u003cbr\u003e\u003csup\u003e(any application)\u003c/sup\u003e |\n| \u003cins\u003e[Dynamic Attach](#222-dynamic-attach)\u003c/ins\u003e\u003cbr\u003e\u0026nbsp; | 2 (async)\u003cbr\u003e\u0026nbsp; | After app start\u003cbr\u003e\u003csup\u003e(any application)\u003c/sup\u003e |\n| \u003cins\u003e[Static Deferred Attach](#223-static-deferred-attach)\u003c/ins\u003e\u003cbr\u003e\u0026nbsp; | 1 (sync)\u003cbr\u003e\u0026nbsp; | After app start\u003cbr\u003e\u003csup\u003e([some applications](#static-deferred-attach-is-currently-supported-for))\u003c/sup\u003e |\n\n#### 2.2.1 \u003cins\u003eStatic Attach\u003c/ins\u003e\n\nWith \u003cins\u003e[Static Attach](#221-static-attach)\u003c/ins\u003e, the application is executed with the `-javaagent` argument, and the agent initialization occurs before the application is started. This mode requires 1 command from the command line.\n\nStatically attaching to a Java application involves the use of the `-javaagent` vm argument at the time of startup of the target Java application. The following command can be used as an example:\n\n```bash\njava -javaagent:opentracing-specialagent-1.7.4.jar -jar MyApp.jar\n```\n\nThis command statically attaches \u003cins\u003eSpecialAgent\u003c/ins\u003e to the application in `MyApp.jar`.\n\n#### 2.2.2 \u003cins\u003eDynamic Attach\u003c/ins\u003e\n\nWith \u003cins\u003e[Dynamic Attach](#222-dynamic-attach)\u003c/ins\u003e, the application is allowed to start first, afterwhich an agent VM is dynamically attached to the application's PID. This mode requires 2 commands from the command line: the first for the application, and the second for the agent VM.\n\nDynamically attaching to a Java application involves the use of a running application’s PID, after the application’s startup. The following commands can be used as an example:\n\n1. To obtain the `PID` of the target application:\n    ```bash\n    jps\n    ```\n\n1. To attach to the target `PID`:\n   * For jdk1.8\n     ```bash\n     java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar opentracing-specialagent-1.7.4.jar ${PID}\n     ```\n\n   * For jdk9+\n     ```bash\n     java -jar opentracing-specialagent-1.7.4.jar ${PID}\n     ```\n\n**Note:** Properties that are provided in the command to dynamically attach will be absorbed by the target application. This applies to properties specific to \u003cins\u003eSpecialAgent\u003c/ins\u003e, such as `-Dsa.log.level=FINER`, as well as other properties such as `-Djava.util.logging.config.file=out.log`.\n\n**Troubleshooting:** If you encounter an exception stating `Unable to open socket file`, make sure the attaching VM is executed with the same permissions as the target VM.\n\n#### 2.2.3 \u003cins\u003eStatic Deferred Attach\u003c/ins\u003e\n\nWith \u003cins\u003eStatic Deferred Attach\u003c/ins\u003e, the application is executed with the `-javaagent` argument, but the agent initialization is deferred until the application is started. This mode requires 1 command from the command line, and is designed specifically for runtimes that have complex initialization lifecycles that may result in extraneously lengthy startup times when attached with \u003cins\u003e[Static Attach](#221-static-attach)\u003c/ins\u003e.\n\n##### \u003cins\u003eStatic Deferred Attach\u003c/ins\u003e is currently supported for:\n\n1. Spring WebMVC (1.0 to LATEST).\n1. Spring Boot (1.0.0.RELEASE to LATEST).\n\nIf the above supported application environment is detected, \u003cins\u003eStatic Deferred Attach\u003c/ins\u003e is automatically activated.\n\n**To deactivate** \u003cins\u003eStatic Deferred Attach\u003c/ins\u003e, specify the following system property on the command line:\n\n```bash\n-Dsa.init.defer=false\n```\n\nThe following command can be used as an example:\n\n```bash\njava -javaagent:opentracing-specialagent-1.7.4.jar -Dsa.init.defer=false -jar MySpringBootApp.jar\n```\n\n## 3 Configuration\n\n### 3.1 Overview\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e exposes a simple pattern for configuration of \u003cins\u003eSpecialAgent\u003c/ins\u003e, the \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e, as well as \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e. The configuration pattern is based on system properties, which can be defined on the command-line, in a properties file, or in [@AgentRunner.Config][agentrunner-config] for JUnit tests:\n\n**Configuration Layers**\n\n1. Properties passed on the command-line via `-D${PROPERTY}=...` override same-named properties defined in the subsequent layers.\n\n1. The [@AgentRunner.Config][agentrunner-config] annotation allows one to define log level and re/transformation event logging settings. Properties defined in the `@Config` annotation override same-named properties defined in the subsequent layers.\n\n1. The `-Dsa.config=${PROPERTIES_FILE}` command-line argument can be specified for \u003cins\u003eSpecialAgent\u003c/ins\u003e to load property names from a `${PROPERTIES_FILE}`. Properties defined in the `${PROPERTIES_FILE}` override same-named properties defined in the subsequent layer.\n\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e has a `default.properties` file that defines default values for properties that need to be defined.\n\n### 3.2 Properties\n\nThe following properties are supported by all \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e:\n\n#### 3.2.1 Logging\n\n* `-Dsa.log.level`\n\n  Set the logging level for \u003cins\u003eSpecialAgent\u003c/ins\u003e. Acceptable values are: `SEVERE`, `WARNING`, `INFO`, `CONFIG`, `FINE`, `FINER`, or `FINEST`, or any numerical log level value is accepted also. The default logging level is set to `WARNING`.\n\n* `-Dsa.log.events`\n\n  Set the re/transformation events to be logged: `DISCOVERY`, `IGNORED`, `TRANSFORMATION`, `ERROR`, `COMPLETE`. The property accepts a comma-delimited list of event names. By default, the `ERROR` event is logged (only when run with `AgentRunner`).\n\n* `-Dsa.log.file`\n\n  Set the logging output file for \u003cins\u003eSpecialAgent\u003c/ins\u003e.\n\n#### 3.2.2 Integration\n\n1. \u003cins\u003eVerbose mode\u003c/ins\u003e\n\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;`-Dsa.integration.*.verbose`\u003cbr\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;`-Dsa.integration.${INTEGRATION_NAME_PATTERN}.verbose`\n\n   Sets verbose mode for all plugins (i.e. `*`) or one plugin (i.e. `${INTEGRATION_NAME_PATTERN}`). This property can also be set in an `AgentRunner` JUnit test with the `@AgentRunner.Config(verbose=true)` for all tests in a JUnit class, or `@AgentRunner.TestConfig(verbose=true)` for an individual JUnit test method.\n\n   The [Java Concurrent API plugin](https://github.com/opentracing-contrib/java-concurrent) supports verbose mode, which is disabled by default. To enable, set `sa.integration.concurrent.verbose=true`. In non-verbose mode, parent span context is propagating to task execution (if a parent span context exists). In verbose mode, a parent span is always created upon task submission to the executor, and a child span is created when the task is started.\n\n#### 3.2.3 General\n\n1. \u003cins\u003eSkip fingerprint verification:\u003c/ins\u003e\n\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;`-Dsa.fingerprint.skip`\n\n   Tells the \u003cins\u003eSpecialAgent\u003c/ins\u003e to skip the fingerprint verification when linking \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e into class loaders. This option allows one to work around an unexpected fingerprint verification failure, which can happen in complex runtimes that do not contain all class definitions on the class path. It must be noted, however, that if the fingerprint verification is disabled, the \u003cins\u003eSpecialAgent\u003c/ins\u003e will indiscriminately install all plugins regardless of library version compatibility issues, which may lead to `NoClassDefFoundError`, `IllegalAccessError`, `AbstractMethodError`, `LinkageError`, etc.\n\n### 3.3 Selecting the \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e\n\nThe \u003cins\u003eSpecialAgent\u003c/ins\u003e supports OpenTracing-compatible \u003cins\u003e[Tracers](#61-tracer)\u003c/ins\u003e. There are 2 ways to connect a \u003cins\u003e[Tracer](#61-tracer)\u003c/ins\u003e to the \u003cins\u003eSpecialAgent\u003c/ins\u003e runtime:\n\n1. **Bundled \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e**\n\n    The \u003cins\u003eSpecialAgent\u003c/ins\u003e bundles the following \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e:\n\n    1. [Jaeger Trace Exporter](https://github.com/opentracing-contrib/java-opentracing-jaeger-bundle)\n    1. [LightStep Trace Exporter](https://github.com/lightstep/lightstep-tracer-java/tree/master/lightstep-tracer-jre-bundle)\n    1. [Wavefront Trace Exporter](https://github.com/wavefrontHQ/wavefront-opentracing-bundle-java)\n    1. [OpenTelemetry Bridge Trace Exporter](https://github.com/opentracing-contrib/java-opentelemetry-bridge)\n    1. [`MockTracer`](https://github.com/opentracing/opentracing-java/blob/master/opentracing-mock/)\n\n    The `-Dsa.exporter=${SHORT_NAME}` property specifies which \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e is to be used. The value of `${SHORT_NAME}` is the \u003cins\u003e[Short Name](#21221-short-name)\u003c/ins\u003e of the \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e, i.e. `jaeger`, `lightstep`, `wavefront`, `otel`, or `mock`.\n\n1. **External \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e**\n\n    The \u003cins\u003eSpecialAgent\u003c/ins\u003e allows external \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e to be attached to the runtime.\n\n    The `-Dsa.exporter=${TRACE_EXPORTER_JAR}` property specifies the JAR path of the \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e to be used. The `${TRACE_EXPORTER_JAR}` must be a JAR that supplies an implementation of the [`TracerFactory`](https://github.com/opentracing-contrib/java-tracerresolver#tracer-factory) interface of the [TracerResolver](https://github.com/opentracing-contrib/java-tracerresolver) project.\n\n_**NOTE**: If a tracer is not specified with the `-Dsa.exporter=...` property, the \u003cins\u003eSpecialAgent\u003c/ins\u003e will present a warning in the log that states: `Tracer NOT RESOLVED`._\n\n### 3.4 Disabling \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e\n\n\u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e bundled with the \u003cins\u003eSpecialAgent\u003c/ins\u003e are enabled by default.\n\nMultiple properties to \u003cins\u003edisable\u003c/ins\u003e or to \u003cins\u003eenable\u003c/ins\u003e all or individual plugins can be declared via the [Configuration Pattern](#3-configuration). The processing order of the properties is equal to the order of their declaration.\n\n#### 3.4.1 Disabling All \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e\n\nTo \u003cins\u003edisable\u003c/ins\u003e _all \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e_:\n\n```\nsa.integration.*.disable\n```\n\u003csup\u003eThe suffix `.disable` is interchangeable with `.enable=false`.\u003c/sup\u003e\n\n#### 3.4.2 Disabling (or enabling) One \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e\n\nTo \u003cins\u003edisable\u003c/ins\u003e _an individual \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e_:\n\n```\nsa.integration.${INTEGRATION_NAME_PATTERN}.disable\n```\n\u003csup\u003eThe suffix `.disable` is interchangeable with `.enable=false`.\u003c/sup\u003e\n\nConversely, to \u003cins\u003eenable\u003c/ins\u003e _an individual \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e_.\n\n```\nsa.integration.${INTEGRATION_NAME_PATTERN}.enable\n```\n\u003csup\u003eThe suffix `.enable` is interchangeable with `.disable=false`.\u003c/sup\u003e\n\n##### Integration Name Pattern\n\nThe value of `${INTEGRATION_NAME_PATTERN}` represents the name of the \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e, as specified in \u003cins\u003e[Integrations](#41-integrations)\u003c/ins\u003e (\"Integration Rule\" column). The `${INTEGRATION_NAME_PATTERN}` allows for the use of `*` and `?` characters to match multiple rules simultaneously. For instance:\n\n1. `dubbo:2.?`\u003cbr\u003eMatches all \u003cins\u003eDubbo\u003c/ins\u003e rules, including `dubbo:2.6`, and `dubbo:2.7`.\n1. `cassandra:driver:*`\u003cbr\u003eMatches all \u003cins\u003eCassandra Driver\u003c/ins\u003e rules, including `cassandra:driver:3`, and `cassandra:driver:4`.\n1. `spring:web*`\u003cbr\u003eMatches all \u003cins\u003eSpring WebMVC\u003c/ins\u003e, \u003cins\u003eSpring WebFlux\u003c/ins\u003e and \u003cins\u003eSpring WebSocket\u003c/ins\u003e rules, including `spring:webmvc`, `spring:webflux`, and `spring:websocket`.\n1. `cassandra:driver`\u003cbr\u003eMatches all \u003cins\u003eCassandra Driver\u003c/ins\u003e rules, including `cassandra:driver:3` and `cassandra:driver:4`.\n\nIf the _version part_ of the `${INTEGRATION_NAME_PATTERN}` does not end with a `*` or `?` character, a `*` will be appended automatically. Therefore:\n\n1. `dubbo:2`\u003cbr\u003eMatches all \u003cins\u003eDubbo\u003c/ins\u003e v2 rules, including `dubbo:2.6`, and `dubbo:2.7`.\n1. `cassandra:driver`\u003cbr\u003eMatches all \u003cins\u003eCassandra Driver\u003c/ins\u003e rules, `cassandra:driver:3`, and `cassandra:driver:4`.\n1. `spring`\u003cbr\u003eMatches all \u003cins\u003eSpring\u003c/ins\u003e rules.\n1. `spring:w`\u003cbr\u003eDoes not match any rules.\n\n#### 3.4.3 Disabling `AgentRule`s of an \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e\n\nTo disable _an individual `AgentRule` of an \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e_:\n\n```\nsa.integration.${INTEGRATION_NAME_PATTERN}#${AGENT_RULE_SIMPLE_CLASS_NAME}.disable\n```\n\u003csup\u003eThe suffix `.disable` is interchangeable with `.enable=false`.\u003c/sup\u003e\n\nThe value of `${AGENT_RULE_SIMPLE_CLASS_NAME}` is the simple class name of the `AgentRule` subclass that is to be disabled.\n\n### 3.5 Disabling \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e\n\nAll \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e bundled in \u003cins\u003eSpecialAgent\u003c/ins\u003e are enabled by default, and can be disabled.\n\nTo disable _all \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e_:\n\n```\nsa.exporter.*.disable\n```\n\u003csup\u003eThe suffix `.disable` is interchangeable with `.enable=false`.\u003c/sup\u003e\n\nTo disable _an individual \u003cins\u003eTrace Exporter\u003c/ins\u003e_:\n\n```\nsa.exporter.${SHORT_NAME}.disable\n```\n\u003csup\u003eThe suffix `.disable` is interchangeable with `.enable=false`.\u003c/sup\u003e\n\nThe value of `${SHORT_NAME}` is the \u003cins\u003e[Short Name](#21221-short-name)\u003c/ins\u003e of the plugin, such as `jaeger`, `lightstep`, `wavefront`, `otel`, or `mock`.\n\n### 3.6 Including Custom \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e\n\nCustom \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e can be implemented by following the [SpecialAgent Rule API](https://github.com/opentracing-contrib/java-specialagent/tree/master/opentracing-specialagent-api). JARs containing custom \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e can be loaded by \u003cins\u003eSpecialAgent\u003c/ins\u003e via:\n\n```\n-Dsa.classpath=${JARs}\n```\n\nHere, `${JARs}` refers to a `File.pathSeparator`-delimited (`:` for \\*NIX, `;` for Windows) string of JARs containing the custom \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e.\n\n### 3.7 Rewritable Tracer\n\nThe \u003cins\u003e[Rewritable Tracer](#37-rewritable-tracer)\u003c/ins\u003e allows one to rewrite data in the spans created by \u003cins\u003e[Integrations](#41-integrations)\u003c/ins\u003e without having to modify the source code.\n\nThe \u003cins\u003e[Rewritable Tracer](#37-rewritable-tracer)\u003c/ins\u003e is a rules engine that is configured via JSON files [that conform to a specification][rewrite].\n\nFor example:\n\n* The following JSON defines a rule for all \u003cins\u003e[Integrations](#41-integrations)\u003c/ins\u003e to drop all **tag**s in spans matching `key` literal `http.url` and `value` regex `.*secret.*`.\n\n  ```json\n  {\n    \"*\": [\n      {\n        \"input\": {\n          \"type\": \"tag\",\n          \"key\": \"http.url\",\n          \"value\": \".*secret.*\"\n        }\n      }\n    ]\n  }\n  ```\n\n* The following JSON defines a rule for the `jedis` \u003cins\u003e[Integration](#41-integrations)\u003c/ins\u003e to rewrite all **log**s matching `key` literal `http.method` as a **tag**.\n\n```json\n{\n  \"jedis\": [\n    {\n      \"input\": {\n        \"type\": \"log\",\n        \"key\": \"http.method\",\n      },\n      \"output\": {\n        \"type\": \"tag\"\n      }\n    }\n  ]\n}\n```\n\nFor a configuration spec and other use-case examples, please refer to the [`rewrite` plugin][rewrite].\n\n## 4 Supported \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e and \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e\n\n### 4.1 \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e\n\nIntrinsically, the \u003cins\u003eSpecialAgent\u003c/ins\u003e includes support for the instrumentation of the following 3rd-party libraries. Each row refers to an \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e, the \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e, and the minimum and maximum version tested by the build.\n\nFor the development of \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e, please refer to the [`opentracing-specialagent-api`][api] module.\n\n| Integration\u003cbr/\u003e\u003csup\u003e(link to impl. of \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e)\u003c/sup\u003e | Integration Rule\u003cbr/\u003e\u003csup\u003e(link to impl. of \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e)\u003c/sup\u003e | Min Version\u003cbr/\u003e\u003csup\u003e(min supported)\u003c/sup\u003e | Max Version\u003cbr/\u003e\u003csup\u003e(max supported)\u003c/sup\u003e |\n|:-|:-|:-:|:-:|\n| [Akka Actor](https://github.com/opentracing-contrib/java-akka) | [`akka:actor`][akka-actor] | 2.5.0 | LATEST |\n| Akka Http | [`akka:http`][akka-http] | 10.1.0 | LATEST |\n| [Apache Camel](https://github.com/apache/camel/tree/master/components/camel-opentracing) | [`camel`][camel] | 2.24.0 | 2.24.2 |\n| Apache CXF | [`cxf`][cxf] | 3.3.3 | LATEST |\n| Apache Dubbo | [`dubbo:2.6`][dubbo-2.6] | 2.6.2 | 2.6.7 |\n| | [`dubbo:2.7`][dubbo-2.7] | 2.7.1 | LATEST |\n| [Apache HttpClient](https://github.com/opentracing-contrib/java-apache-httpclient) | [`apache:httpclient`][apache-httpclient] | 4.4 | LATEST |\n| [Async Http Client](https://github.com/opentracing-contrib/java-asynchttpclient) | [`asynchttpclient`][asynchttpclient] | 2.7.0 | LATEST |\n| [AWS SDK](https://github.com/opentracing-contrib/java-aws-sdk) | [`aws:sdk:1`][aws-sdk-1] | 1.11.79 | LATEST |\n| | [`aws:sdk:2`][aws-sdk-2] | 2.1.4 | **FIXME** |\n| [Cassandra Driver](https://github.com/opentracing-contrib/java-cassandra-driver) | [`cassandra:driver:3`][cassandra-driver-3] | 3.0.0 | 3.7.2 |\n| | [`cassandra:driver:4`][cassandra-driver-4] | 4.0.0 | LATEST |\n| Couchbase Client | [`couchbase-client`][couchbase-client] | 2.7.3 | 2.7.13 |\n| Dynamic\u003cbr\u003e\u0026nbsp; | [`dynamic`\u003cbr\u003e\u003csup\u003e(configurable)\u003c/sup\u003e][dynamic] | **\\***\u003cbr\u003e\u0026nbsp; | **\\***\u003cbr\u003e\u0026nbsp; |\n| [Elasticsearch Client\u003cbr\u003e\u0026nbsp;](https://github.com/opentracing-contrib/java-elasticsearch-client) | [`elasticsearch:client-transport`][elasticsearch-7-transport-client]\u003cbr\u003e[`elasticsearch:client-rest`][elasticsearch-7-rest-client] | 6.4.0\u003cbr\u003e6.4.0 | LATEST\u003cbr\u003e6.8.7 |\n| [Feign](https://github.com/OpenFeign/feign-opentracing/tree/master/feign-opentracing) | [`feign`][feign] | 9.0.0 | LATEST |\n| Google Http Client | [`google-http-client`][google-http-client] | 1.19.0 | LATEST |\n| [Grizzly AsyncHttpClient](https://github.com/opentracing-contrib/java-grizzly-ahc) | [`grizzly:ahc`][grizzly-ahc] | 1.15 | LATEST |\n| [Grizzly HTTP Server](https://github.com/opentracing-contrib/java-grizzly-http-server) | [`grizzly:http-server`][grizzly-http-server] | 2.3.35 | LATEST |\n| [GRPC](https://github.com/opentracing-contrib/java-grpc) | [`grpc`][grpc] | 1.7.3 | LATEST |\n| [Hazelcast](https://github.com/opentracing-contrib/opentracing-hazelcast) | [`hazelcast`][hazelcast] | 3.12 | 3.12.6 |\n| [Java Concurrent API \\[`java.util.concurrent`\\]](https://github.com/opentracing-contrib/java-concurrent) | [`concurrent`][concurrent] | 1.5 | 11 |\n| [Java JDBC API \\[`java.sql`\\]][java-jdbc]\u003cbr\u003e\u0026nbsp; | [`jdbc`\u003cbr\u003e\u003csup\u003e(configurable)\u003c/sup\u003e][jdbc] | 3.1\u003cbr\u003e\u0026nbsp; | 4.3\u003cbr\u003e\u0026nbsp; |\n| [Java JMS API \\[`javax.jms`\\]][java-jms] | [`jms`][jms] | 1.1-rev-1 | LATEST |\n| [Java Servlet API \\[`javax.servlet`\\]](https://github.com/opentracing-contrib/java-web-servlet-filter)\u003cbr\u003e\u0026nbsp; | [`servlet`\u003cbr\u003e\u003csup\u003e(configurable)\u003c/sup\u003e][servlet] | 2.3\u003cbr\u003e\u0026nbsp; | 3.1\u003cbr\u003e\u0026nbsp; |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;Jetty | | 7.6.21.v20160908 | 9.2.15.v20160210 |\n| \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;Tomcat | | 7.0.65 | 9.0.27 |\n| Java Thread [`java.lang.Thread`] | [`thread`][thread] | 1.0 | 11 |\n| HttpURLConnection [`java.net.HttpURLConnection`] | [`httpurlconnection`][httpurlconnection] | 1.1 | 11 |\n| [JAX-RS Client](https://github.com/opentracing-contrib/java-jaxrs) | [`jax-rs`][jaxrs] | 2.0 | LATEST |\n| [Jedis Client](https://github.com/opentracing-contrib/java-redis-client/tree/master/opentracing-redis-jedis) | [`jedis`][jedis] | 2.7.0 | 3.3.0 |\n| [Kafka Client](https://github.com/opentracing-contrib/java-kafka-client) | [`kafka:client`][kafka-client] | 1.1.0 | LATEST |\n| [Kafka Streams](https://github.com/opentracing-contrib/java-kafka-client) | [`kafka:streams`][kafka-streams] | 1.1.0 | LATEST |\n| [Lettuce Client](https://github.com/opentracing-contrib/java-redis-client/tree/master/opentracing-redis-lettuce) | [`lettuce`][lettuce] | 5.0.0.RELEASE | LATEST |\n| [MongoDB Driver](https://github.com/opentracing-contrib/java-mongo-driver) | [`mongo:driver`][mongo-driver] | 3.9.0 | LATEST |\n| Mule 4 Artifact Module | [`mule:artifact-module:4`][mule-4-module-artifact] | 4.2.2 | LATEST |\n| Mule 4 Core | [`mule:core:4`][mule-4-core] | 4.2.2 | LATEST |\n| [Neo4j Driver](https://github.com/opentracing-contrib/java-neo4j-driver) | [`neo4j:driver`][neo4j-driver] | 4.0.0 | LATEST |\n| Netty | [`netty`][netty] | 4.1.0 | 4.1.46.Final |\n| [OkHttp][java-okhttp] | [`okhttp`][okhttp] | 3.5.0 | LATEST |\n| Play Framework | [`play`][play] | 2.6.0 | LATEST |\n| Play WS | [`play:ws`][play-ws] | 2.0.0 | **FIXME** |\n| Pulsar Client | [`pulsar:client`][pulsar-client] | 2.2.0 | **FIXME** |\n| Pulsar Functions \u003cbr\u003e\u0026nbsp; | [`pulsar-functions`\u003cbr\u003e\u003csup\u003e(configurable)\u003c/sup\u003e][pulsar-functions] | 2.2.0\u003cbr\u003e\u0026nbsp; | **FIXME**\u003cbr\u003e\u0026nbsp; |\n| [RabbitMQ Client](https://github.com/opentracing-contrib/java-rabbitmq-client) | [`rabbitmq:client`][rabbitmq-client] | 5.0.0 | LATEST |\n| [Reactor](https://github.com/opentracing-contrib/java-reactor) | [`reactor`][reactor] | 3.2.3.RELEASE | LATEST |\n| [Redisson](https://github.com/opentracing-contrib/java-redis-client/tree/master/opentracing-redis-redisson) | [`redisson`][redisson] | 3.11.0 | 3.11.5 |\n| [RxJava](https://github.com/opentracing-contrib/java-rxjava) | [`rxjava:2`][rxjava-2] | 2.1.0 | LATEST |\n| | [`rxjava:3`][rxjava-3] | 3.0.0 | LATEST |\n| [Spring JMS](https://github.com/opentracing-contrib/java-jms/tree/master/opentracing-jms-spring) | [`spring:jms`][spring-jms] | 5.0.0.RELEASE | LATEST |\n| [Spring Kafka](https://github.com/opentracing-contrib/java-kafka-client/tree/master/opentracing-kafka-spring) | [`spring:kafka`][spring-kafka] | 2.2.0.RELEASE | LATEST |\n| [Spring Messaging](https://github.com/opentracing-contrib/java-spring-messaging) | [`spring:messaging`][spring-messaging] | 5.1.0.RELEASE | 5.3.0.RELEASE |\n| [Spring RabbitMQ](https://github.com/opentracing-contrib/java-spring-rabbitmq) | [`spring:rabbitmq`][spring-rabbitmq] | 2.0.0.RELEASE | LATEST |\n| [Spring WebFlux](https://github.com/opentracing-contrib/java-spring-web) | [`spring:webflux`][spring-webflux] | 5.1.0.RELEASE | LATEST |\n| [Spring Boot WebSocket STOMP](https://github.com/opentracing-contrib/java-spring-cloud/tree/master/instrument-starters/opentracing-spring-cloud-websocket-starter) | [`spring:websocket`][spring-websocket] | 2.1.0.RELEASE | LATEST |\n| [Spring \\[`@Async` and `@Scheduled`\\]](https://github.com/opentracing-contrib/java-spring-cloud/tree/master/instrument-starters/opentracing-spring-cloud-core) | [`spring:scheduling`][spring-scheduling] | 5.0.0.RELEASE | LATEST |\n| [Spring Web MVC](https://github.com/opentracing-contrib/java-spring-web) | [`spring:webmvc`][spring-webmvc] | 3.0.2.RELEASE | LATEST |\n| [Spymemcached](https://github.com/opentracing-contrib/java-memcached-client/tree/master/opentracing-spymemcached) | [`spymemcached`][spymemcached] | 2.11.0 | LATEST |\n| [Thrift](https://github.com/opentracing-contrib/java-thrift) | [`thrift`][thrift] | 0.10.0 | 0.13.0 |\n| [Zuul](https://github.com/opentracing-contrib/java-spring-cloud/tree/master/instrument-starters/opentracing-spring-cloud-zuul-starter) | [`zuul`][zuul] | 1.0.0 | 2.1.1 |\n\n### 4.2 \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e\n\nIntrinsically, the \u003cins\u003eSpecialAgent\u003c/ins\u003e includes support for the following \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e. A demo can be referenced [here](https://github.com/opentracing-contrib/java-specialagent-demo).\n\n| Trace Exporter\u003cbr/\u003e\u003csup\u003e(link to impl. of \u003cins\u003etrace exporter\u003c/ins\u003e)\u003c/sup\u003e | [Short Name](#21221-short-name)\u003cbr/\u003e\u003csup\u003e(`-Dsa.exporter=${short_name}`)\u003c/sup\u003e |\n|:-|:-|\n| [Jaeger Trace Exporter](https://github.com/opentracing-contrib/java-opentracing-jaeger-bundle)\u003cbr/\u003e\u003csup\u003e[(configuration reference)](https://github.com/jaegertracing/jaeger-client-java/blob/master/jaeger-core/README.md#configuration-via-environment)\u003c/sup\u003e | `jaeger`\u003cbr/\u003e\u0026nbsp; |\n| [LightStep Trace Exporter](https://github.com/lightstep/lightstep-tracer-java/tree/master/lightstep-tracer-jre-bundle)\u003cbr/\u003e\u003csup\u003e[(configuration reference)](https://docs.lightstep.com/docs/create-projects-for-your-environments)\u003c/sup\u003e | `lightstep`\u003cbr/\u003e\u0026nbsp; |\n| [Wavefront Trace Exporter](https://github.com/wavefrontHQ/wavefront-opentracing-bundle-java)\u003cbr/\u003e\u003csup\u003e[(configuration reference)](https://github.com/wavefrontHQ/wavefront-opentracing-bundle-java#setup-steps)\u003c/sup\u003e | `wavefront`\u003cbr/\u003e\u0026nbsp; |\n| [OpenTelemetry Bridge Trace Exporter](https://github.com/opentracing-contrib/java-opentelemetry-bridge)\u003cbr/\u003e\u003csup\u003e\u003cins\u003e(configuration reference)\u003c/ins\u003e\u003c/sup\u003e | `otel`\u003cbr/\u003e\u0026nbsp; |\n| [`MockTracer`](https://github.com/opentracing/opentracing-java/blob/master/opentracing-mock/)| `mock` |\n\n### 4.3 Libraries instrumented via other Integrations\n\nThe following libraries are instrumented by other \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e.\n\n| Library\u003cbr/\u003e\u0026nbsp; | Integration Rule\u003cbr/\u003e\u003csup\u003e(link to impl. of \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e)\u003c/sup\u003e | Min Version\u003cbr/\u003e\u003csup\u003e(min supported)\u003c/sup\u003e | Max Version\u003cbr/\u003e\u003csup\u003e(max supported)\u003c/sup\u003e |\n|:-|:-|:-:|:-:|\n| Hystrix | [`concurrent`][concurrent] | 1.5 | 11 |\n| JDBI\u003cbr\u003e\u0026nbsp; | [`jdbc`\u003cbr\u003e\u003csup\u003e(configurable)\u003c/sup\u003e][jdbc] | \\*\u003cbr\u003e\u0026nbsp; | \\*\u003cbr\u003e\u0026nbsp; |\n| Ratpack | [`netty`][netty] | 1.4.0 | LATEST |\n| Solr Client | [`apache:httpclient`][apache-httpclient] | 4.0.0 | LATEST |\n| SparkJava | [`javax.servlet`][servlet] | 2.2 | LATEST |\n| Spring Cloud | \\*\u003cbr\u003e\u0026nbsp; | \\*\u003cbr\u003e\u0026nbsp; | \\*\u003cbr\u003e\u0026nbsp; |\n| Spring Data\u003cbr\u003e\u0026nbsp; | [`jdbc`\u003cbr\u003e\u003csup\u003e(configurable)\u003c/sup\u003e][jdbc] | \\*\u003cbr\u003e\u0026nbsp; | \\*\u003cbr\u003e\u0026nbsp; |\n| Spring Web | [`httpurlconnection`][httpurlconnection] | \\*\u003cbr\u003e\u0026nbsp; | \\*\u003cbr\u003e\u0026nbsp; |\n| Twilio | [`apache:httpclient`][apache-httpclient] | 0.0.1 | LATEST |\n\n## 5 Objectives\n\n### 5.1 Goals\n\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e must allow any \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e available in [opentracing-contrib][opentracing-contrib] to be automatically installable in applications that utilize a 3rd-party library for which an \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e exists.\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e must automatically install the \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e for each 3rd-party library, regardless in which class loader the 3rd-party library is loaded.\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e must not adversely affect the runtime stability of the application on which it is intended to be used. This goal applies only to the code in the \u003cins\u003eSpecialAgent\u003c/ins\u003e, and transitively applies to the code of the \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e made available in [opentracing-contrib][opentracing-contrib].\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e must support \u003cins\u003e[Static Attach](#221-static-attach)\u003c/ins\u003e and \u003cins\u003e[Dynamic Attach](#222-dynamic-attach)\u003c/ins\u003e for applications running on JVM versions 1.7, 1.8, 9, and 11.\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e must implement a lightweight test methodology that can be easily applied to a module that implements \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e for a 3rd-party library. This test must simulate:\n   1. Launch the test in a process simulating the `-javaagent` vm argument that points to the \u003cins\u003eSpecialAgent\u003c/ins\u003e (in order to test auto-instrumentation functionality).\n   1. Elevate the test code to be executed from a custom class loader that is disconnected from the system class loader (in order to test bytecode injection into an isolated class loader that cannot resolve classes on the system classpath).\n   1. Allow tests to specify their own `Tracer` instances via `GlobalTracer`, or initialize a `MockTracer` if no instance is specified. The test must provide a reference to the `Tracer` instance in the test method for assertions with JUnit.\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e must provide a means by which \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e can be configured for use on a target application.\n\n### 5.2 Non-Goals\n\n1. The \u003cins\u003eSpecialAgent\u003c/ins\u003e is not designed to modify application code, beyond the installation of \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e. For example, there is no facility for dynamically augmenting arbitrary code.\n\n## 6 Definitions\n\nThe following terms are used throughout this documentation.\n\n#### 6.1 \u003cins\u003e[Tracer](#61-tracer)\u003c/ins\u003e\n\nService provider of the OpenTracing standard, providing an implementation of the `io.opentracing.Tracer` interface.\n\nExamples:\n* [Jaeger Tracer][jaeger]\n* [LightStep Tracer][lightstep]\n* [Wavefront Tracer][wavefront]\n\n\u003csub\u003e_\u003cins\u003e[Tracers](#61-tracer)\u003c/ins\u003e **are not** coupled to the \u003cins\u003eSpecialAgent\u003c/ins\u003e._\u003c/sub\u003e\n\n#### 6.2 \u003cins\u003e[Trace Exporter](#62-trace-exporter)\u003c/ins\u003e\n\nA bridge providing automatic discovery of \u003cins\u003e[Tracers](#61-tracer)\u003c/ins\u003e in a runtime instrumented with the OpenTracing API. This bridge implements the `TracerFactory` interface of [TracerResolver](https://github.com/opentracing-contrib/java-tracerresolver/blob/master/opentracing-tracerresolver/), and is distributed as a single \"fat JAR\" that can be conveniently added to the classpath of a Java process.\n\n\u003csub\u003e_\u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e **are not** coupled to the \u003cins\u003eSpecialAgent\u003c/ins\u003e._\u003c/sub\u003e\n\n#### 6.3 \u003cins\u003e[Integration](#63-integration)\u003c/ins\u003e\n\nAn OpenTracing Integration for a 3rd-party library, existing as individual repositories in [opentracing-contrib][opentracing-contrib].\n\nExamples:\n* [`opentracing-contrib/java-okhttp`][java-okhttp]\n* [`opentracing-contrib/java-jdbc`][java-jdbc]\n* [`opentracing-contrib/java-jms`][java-jms]\n\n\u003csub\u003e_\u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e **are not** coupled to the \u003cins\u003eSpecialAgent\u003c/ins\u003e._\u003c/sub\u003e\n\n#### 6.4 \u003cins\u003e[Integration Rule](#64-integration-rule)\u003c/ins\u003e\n\nA submodule of the \u003cins\u003eSpecialAgent\u003c/ins\u003e that implements the auto-instrumentation rules for \u003cins\u003e[Integrations](#63-integration)\u003c/ins\u003e via the [`opentracing-specialagent-api`][api]. See \u003cins\u003e[Integrations](#2121-integrations)\u003c/ins\u003e for a description of Uncoupled and Coupled Integrations.\n\nExamples:\n* [`rule/okhttp`][okhttp]\n* [`rule/jdbc`][jdbc]\n* [`rule/jms-1`][jms-1]\n\n\u003csub\u003e_\u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e **are** coupled to the \u003cins\u003eSpecialAgent\u003c/ins\u003e._\u003c/sub\u003e\n\n## 7 Credits\n\nThank you to the following contributors for developing \u003cins\u003e[Integrations](#2121-integrations)\u003c/ins\u003e and \u003cins\u003e[Integration Rules](#64-integration-rule)\u003c/ins\u003e:\n\n* [Sergei Malafeev](https://github.com/malafeev)\n* [Jose Montoya](https://github.com/jam01)\n* [Przemyslaw Maciolek](https://github.com/pmaciolek)\n* [Jianshao Wu](https://github.com/jianshaow)\n* [Gregor Zeitlinger](https://github.com/zeitlinger)\n* [@limfriend](https://github.com/limfriend)\n\nThank you to the following contributors for developing \u003cins\u003e[Trace Exporters](#62-trace-exporter)\u003c/ins\u003e:\n\n* [Carlos Alberto Cortez](https://github.com/carlosalberto)\n* [Han Zhang](https://github.com/hanwavefront)\n\nThank you to the following developers for filing issues and helping us fix them:\n\n* [Louis-Etienne](https://github.com/ledor473)\n* [Marcos Trejo Munguia](https://github.com/mtrejo)\n* [@kaushikdeb](https://github.com/kaushikdeb)\n* [@deepakgoenka](https://github.com/deepakgoenka)\n* [Prometheus](https://github.com/etsangsplk)\n* [Randall Theobald](https://github.com/randallt)\n\nThank you to the following individuals for all other general contributions to the codebase:\n\n* [Daniel Rodriguez Hernandez](https://github.com/drodriguezhdez)\n* [qudongfang](https://github.com/qudongfang)\n* [Pontus Rydin](https://github.com/prydin)\n\nFinally, thanks for all of the feedback! Please share your comments [as an issue](https://github.com/opentracing-contrib/java-specialagent/issues)!\n\n## 8 Contributing\n\nPull requests are welcome. For major changes, please [open an issue](https://github.com/opentracing-contrib/java-specialagent/issues) first to discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n\n## 9 License\n\nThis project is licensed under the Apache 2 License - see the [LICENSE.txt](LICENSE.txt) file for details.\n\n[akka-actor]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/akka-actor\n[akka-http]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/akka-http\n[apache-httpclient]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/apache-httpclient\n[asynchttpclient]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/asynchttpclient\n[aws-sdk-1]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/aws-sdk-1\n[aws-sdk-2]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/aws-sdk-2\n[camel]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/camel\n[cassandra-driver-3]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/cassandra-driver-3\n[cassandra-driver-4]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/cassandra-driver-4\n[concurrent]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/concurrent\n[couchbase-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/couchbase-client\n[cxf]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/cxf\n[dubbo-2.6]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/dubbo-2.6\n[dubbo-2.7]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/dubbo-2.7\n[dynamic]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/dynamic\n[elasticsearch-7-rest-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/elasticsearch-7-rest-client\n[elasticsearch-7-transport-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/elasticsearch-7-transport-client\n[feign]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/feign\n[google-http-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/google-http-client\n[grizzly-ahc]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/grizzly-ahc\n[grizzly-http-server]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/grizzly-http-server\n[grpc]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/grpc\n[hazelcast]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/hazelcast\n[httpurlconnection]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/httpurlconnection\n[jaxrs]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/jaxrs\n[jdbc]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/jdbc\n[jedis]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/jedis\n[jms]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/jms\n[kafka-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/kafka-client\n[kafka-streams]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/kafka-streams\n[lettuce]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/lettuce\n[mongo-driver]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/mongo-driver\n[mule-4-core]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/mule-4-core\n[mule-4-module-artifact]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/mule-4-module-artifact\n[neo4j-driver]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/neo4j-driver\n[netty]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/netty\n[okhttp]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/okhttp\n[play-ws]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/play-ws\n[play]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/play\n[pulsar-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/pulsar-client\n[pulsar-functions]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/pulsar-functions\n[rabbitmq-client]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/rabbitmq-client\n[reactor]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/reactor\n[redisson]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/redisson\n[rewrite]: https://github.com/opentracing-contrib/java-specialagent/tree/master/opentracing-rewrite\n[rxjava-2]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/rxjava-2\n[rxjava-3]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/rxjava-3\n[servlet]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/servlet\n[spring-jms]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-jms\n[spring-kafka]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-kafka\n[spring-messaging]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-messaging\n[spring-rabbitmq]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-rabbitmq\n[spring-scheduling]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-scheduling\n[spring-webflux]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-webflux\n[spring-webmvc]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-webmvc\n[spring-websocket]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spring-websocket\n[spymemcached]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/spymemcached\n[thread]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/thread\n[thrift]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/thrift\n[zuul]: https://github.com/opentracing-contrib/java-specialagent/tree/master/rule/zuul\n\n[jaeger]: https://github.com/jaegertracing/jaeger\n[lightstep]: https://github.com/lightstep/lightstep-tracer-java\n[wavefront]: https://github.com/wavefrontHQ/wavefront-opentracing-sdk-java\n\n[agentrunner-config]: https://github.com/opentracing-contrib/java-specialagent/tree/master/opentracing-specialagent-api#51-configuring-agentrunner\n[api]: https://github.com/opentracing-contrib/java-specialagent/tree/master/opentracing-specialagent-api\n[java-jdbc]: https://github.com/opentracing-contrib/java-jdbc\n[java-jms]: https://github.com/opentracing-contrib/java-jms\n[java-okhttp]: https://github.com/opentracing-contrib/java-okhttp\n[opentracing-contrib]: https://github.com/opentracing-contrib/\n[specialagent-pom]: https://github.com/opentracing-contrib/java-specialagent/blob/master/pom.xml\n[circleci]: https://circleci.com/gh/opentracing-contrib/java-specialagent/tree/master\n\n[main-release]: https://repo1.maven.org/maven2/io/opentracing/contrib/specialagent/opentracing-specialagent/1.7.4/opentracing-specialagent-1.7.4.jar\n[main-snapshot]: https://oss.sonatype.org/content/repositories/snapshots/io/opentracing/contrib/specialagent/opentracing-specialagent/1.7.5-SNAPSHOT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopentracing-contrib%2Fjava-specialagent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopentracing-contrib%2Fjava-specialagent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopentracing-contrib%2Fjava-specialagent/lists"}