Java 에이전트로 Java 프로그램을 시작하는 방법을 알고 있습니다.
java -javaagent:myAgent.jar MyJavaProgram
하지만 내 프로그램을 계측하기 위해 2 개 이상의 Java 에이전트를 추가하려면 어떻게해야합니까? JVM에서로드해야하는 모든 에이전트에 대해 java -javaagent : …를 다시 호출하고 싶지 않습니다.
나는 다음과 같은 것을 시도했다.
java -javaagent:agentA.jar, agentB.jar MyJavaProgram
또는 다음과 같이 :
java -javaagent:agentA.jar agentB.jar MyJavaProgram
그러나 성공하지 못했습니다.
내 문제를 해결할 답이 있습니까?
감사합니다.
답변
두 개의 javaagent
매개 변수는 어떻습니까?
java -javaagent:agentA.jar -javaagent:agentB.jar MyJavaProgram
답변
여러 인수를 사용하여이를 수행 할 수있는 것처럼 보입니다. 로부터 문서 :
명령 줄 인터페이스가있는 구현에서 에이전트는 다음 옵션을 명령 줄에 추가하여 시작됩니다.
-javaagent:jarpath[=options]
jarpath 는 에이전트 JAR 파일의 경로입니다. options 는 에이전트 옵션입니다. 이 스위치는 동일한 명령 줄에서 여러 번 사용할 수 있으므로 여러 에이전트를 만들 수 있습니다. 둘 이상의 에이전트가 동일한 jarpath를 사용할 수 있습니다. 에이전트 JAR 파일은 JAR 파일 사양을 준수해야합니다.
(내 강조)
답변
위의 답변에 추가하여 ant를 사용하고 있고 서버를 시작 <jvmargs />
하기 -javaagent
위해 두 개 이상의 jar를 포함하려는 경우 여기에 내가 한 방법이 있습니다.
build.xml
<target name="blah">
...
<jvmarg value="-javaagent:${jar1.path}" />
<jvmarg value="-javaagent:${jar2.path}" />
...
</target>
답변
여러 Java 에이전트를 지원하는 것을 목표로하는 새 프로젝트가 있습니다. 현재는 특정 항목으로 제한됩니다.
본드 요원은 여러 다른 요원을 포장하고 파견하는 슈퍼 요원입니다. 이렇게하면 단일 구성 데이터 집합 (여러 개별 부분 포함)을 사용하여 JVM 내에 단일 에이전트 만 설치하면됩니다.
자세한 내용은 https://github.com/fabric8io/agent-bond/blob/master/README.md 를 참조하십시오.