Puncte:0

Cum se activează agentul java pentru fiecare proces java nou de pe gazdă?

drapel jp

Am un agent java pe care vreau să fie activat automat pentru orice proces java arbitrar care rulează pe gazdă.

Nu mă pot baza pe aliasuri sau variabile de mediu precum CALE, JVM_OPTS etc deoarece vreau ca orice proces JVM să aleagă agentul chiar dacă rulează direct ca /usr/bin/java -jar my-app.jar.

Un mod (mai degrabă murdar) de a face acest lucru este înlocuirea fizică java binar cu scriptul meu bash personalizat astfel:

#!/bin/bash 
$(dirname "$0")/java.original "-javaagent:path/to/my-agent.jar" "$@"

Funcționează, dar această abordare necesită redenumirea originalului java fișier binar pe care aș dori să evit să-l fac.

Întrebare: Există vreo modalitate mai bună de a obține același comportament fără a atinge java binar? Există vreun fișier de configurare global specific Java în care aș putea instrui Java să facă acest lucru mereu rulați cu agentul dat?

drapel cn
Este mai potrivit pentru SO?
drapel jp
Eventual. Întrebarea poate fi mutată în SO cumva sau ar trebui să o recreez acolo?
drapel cn
Nu am puterea de a-l muta, dar nu ezitați să postați încrucișat și îl putem marca ca duplicat sau conectați răspunsul.
djdomi avatar
drapel za
doar semnalați întrebarea dvs. și va fi mutată
Puncte:0
drapel jp

Este un JAVA_TOOL_OPTIONS variabilă de mediu, care poate fi setată în /etc/profile.d pentru toți utilizatorii.

export JAVA_TOOL_OPTIONS=-javaagent:path/to/my-agent.jar

Fiecare proces java îl va prelua, indiferent de modul în care este pornit.

De la oficial documentație:

Această variabilă de mediu vă permite să specificați inițializarea instrumentelor, în special lansarea agenților limbajului de programare nativ sau Java folosind -agentlib sau -javaagent Opțiuni. În exemplul următor, variabila de mediu este setată astfel încât profilerul HPROF să fie lansat la pornirea aplicației:

$ export JAVA_TOOL_OPTIONS="-agentlib:hprof"

Această variabilă poate fi folosită și pentru a mări linia de comandă cu alte opțiuni în scopuri de diagnosticare. De exemplu, puteți furniza opțiunea -XX:OnError pentru a specifica un script sau o comandă care să fie executată atunci când apare o eroare fatală.

Există și nedocumentate _JAVA_OPTIONS variabilă care are prioritate asupra JAVA_TOOL_OPTIONS și argumentele liniei de comandă, care ar putea fi la îndemână în unele cazuri.Dar, deoarece este depreciat și este posibil să nu fie acceptat în toate distribuțiile Java, nu este recomandat să îl utilizați.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.