▶이동
  • 상구너 닷컴 블로그를 방문하신 여러분을 환영합니다 :)
  • 스팸 정책에 의해 일부 덧글·방명록차단될 수 있습니다.

JavaAgents 사용하기.

Study/Java 상구너(sanguneo) 2014. 8. 22. 13:37

javaagent 제작에대한 국내 자료가 상당히 없는거같다. 그나마 제니퍼소프트에서 만드는 제니퍼 자료가 구할만한 자료 .. 라고 해야하나... 게다가 자바에이전트에대한 설명은 무지 어렵거나 스쳐지나갈뿐 ....


아무튼


설명이 되어있는 자바독은 

http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html



자바 에이전트의 기능은 하나라고 생각한다.

다른 함수(main) 이 실행되기전에 혹은 실행하면서, JVM 뜨면서 등으로 클래스를 로드하고 수행해주는 역할 정도일거다.


본 블로그에서 다루는 bcel/asm 등의 bci 기술과 접목시킨다면 실시간 클래스 분석도 가능해진다. (APM 대부분이 그런 같은 방법사용)


다음 내용은 

http://stackoverflow.com/questions/11898566/tutorials-about-javaagents

를 참고했다.


premain 을 이용한 예제.

1. main 과 비슷하게 premain 을 선언한다.

2. manifest.mf 혹은 .txt 파일을 만들어 Premain 에대한 정보를 준다.(Premain 의 위치)

Premain-Class: ex.ex.Example

(주의! ':'뒤에 띄어쓰기,클래스명뒤에 띄어쓰기, 마지막에 줄바꿈 꼭 할것 )

3. jar로 매니페스트와 함께 묶어주기.

4. 실행하기

java -javaagent:exagent.jar targetclass

(주의! 실행할 클래스는 자바에이전트의 선언 이후에 써야한다.)


이 방법들과 bcel, AOP 기법들을 이용해 APM을 제작하는 것이 가능하다.