2013-11-21 2 views
0

jdk 1.6을 사용하고 있습니다. 대상 jvm에 에이전트를 연결하고 몇 가지 인수를 보냈습니다. 몇 가지 인수가 변경 되었기 때문에 대상 jvm에서 실행중인 에이전트를 다시 사용할 수 있습니까? 이 인수의 새로운 가치를 사용하여 새로운 일을하는 에이전트에서 프로그래밍하고 싶습니다. 비슷한 경험을 가진 사람이 있습니까? 덕분에이미 런타임에 대상 jvm에로드 된 에이전트를 다시 사용하는 방법

+1

"에이전트 재사용"이란 무엇을 의미합니까? 실행중인 에이전트의 동작을 변경하려면 에이전트가이를 위해 인터페이스를 제공해야합니다. 소켓이나 파이프를 통해 명령을 받아 들인다. – Holger

+0

예. 에이전트를 재사용하십시오. –

+0

글쎄, 파이프가 그렇게해야합니다. –

답변

0

물론 에이전트의 구현을 재사용 할 수 있습니다. 어떤 방법으로 표현 된 Java 에이전트

public static void premain(String agentArgs, Instrumentation inst); 

은 Java 클래스처럼 취급됩니다. 유일한 것은이 에이전트가 기본 Java 응용 프로그램의 주 진입 점 전에 호출된다는 것입니다. 또한 상담원은 Instrumentation을 쉽게 추가 할 수 있습니다. 에이전트의 번들을 프로그램의 클래스 경로에 추가하기 만하면 에이전트가 자체 번들로 돌아가서 에이전트를 모든 프로그램에 추가 할 수 있습니다. 에이전트는 기본적으로 매니페스트 파일 또는 명령 줄의 명시 적 프로그램 시작점으로 선언 된 Java 프로그램보다 먼저 호출되는 일반 Java 프로그램입니다.

에이전트를로드하기 위해로드해야하는 클래스는 더 이상 가로채는 것을 알 수 없습니다.

+0

나는 그것을 런타임에해야한다. –

+0

Java 에이전트는 런타임에 호출됩니다. 그러나 프로그램 시작시 등록해야합니다. –

+0

'premain'은 대상 프로그램이로드되기 전에 허용됩니다. –

관련 문제