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

JavaAgents 사용하기.

Study/Java 상구너(smokingbird) 2014.08.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을 제작하는 것이 가능하다.

'Study > Java' 카테고리의 다른 글

JavaAgents 사용하기.  (1) 2014.08.22
1 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • 김회장 2014.09.22 20:55 신고
    오... 뭔가 겁나 잘 만들엇다!!
    티스토리같다
  • ASM 으로 바이트코드 변경하기.

    Study/BCI/BCEL/ASM 상구너(smokingbird) 2014.08.21 13:36

    http://ukja.tistory.com/27

    ASM 에 대한 정리가 잘 되어있다.

    'Study > BCI/BCEL/ASM' 카테고리의 다른 글

    bcel 6 다운로드  (0) 2015.01.12
    BCI 기술과 BCEL  (0) 2015.01.12
    ASM 으로 바이트코드 변경하기.  (0) 2014.08.21
    BCEL 그나마 나은 참고자료..  (0) 2014.08.04
    bcel api doc  (0) 2014.08.01
    BCEL 메소드 추가하기  (0) 2014.08.01
    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • 이틀정도 삽질한 내용인데,

    우분투에서(다른 리눅스는 모르겠음) 엔비디아 드라이버를 설치하면 간혹 ctrl+art+f1~f6 으로 콘솔진입할때 검은화면만 뜨는 경우가 있다.

    여기저기서 뭐 grub 을 수정하라는둥 주석을 해제하라는둥 말이 많은데 이렇게 하자.



    sudo vi /etc/default/grub 


    Edit)

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" =>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"


    save and exit


    sudo update-grub


    reboot


    외국에도 이런 문제 겪는 이들이 많아보이니 영어로도 내용을 적는다.


    Solution for tty (console, terminal) black(blank) screen after nvidia driver on ubuntu.

    read this and follow that settings. chao!


    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • 실행중인 프로세스 실제 경로 구하기

    Study/Linux 상구너(smokingbird) 2014.08.08 18:06
    ps -ef | grep 프로세스명 =>> pid 
    readlink /proc/< pid >/exe
    
    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • 아파치 리버스 프록시를 이용하는 방법을 주 내용으로하고 
    Virtualbox 나 VMWARE등의 버추얼머신을 사용하는 환경에서 
    Host OS와 Guest OS를 좀더 통일성있게 사용할 수 있는 방법에 대해 적었다. 

    목표 : NAT 하에있는 Guest OS 에도 Name based Virtualhost 를 이용할 수 있도록 한다. 

    호스트OS에서도 아파치, 게스트OS에서도 아파치를 사용하고 
    두 서버에서 모두 이름기반 가상호스트를 사용하고 싶다면 아래처럼 설정한다. 

    호스트OS에서 ㄱ 
    아파치 모듈 mod_proxy.so,mod_proxy_html.so 탑재. 
    httpd.conf 최하단에 아래 추가. 
    =====아래======= 
    ProxyRequests On 
    <Proxy *> 
        Order deny,allow 
        Allow from all 
    </Proxy> 
    =====아래======= 

    게스트OS는 포트기반의 가상호스트를 이용해 아파치서버를 켜고, 
    호스트에서 게스트의 가상호스트포트로 포트포워딩설정을 해준다. 예, 4123포트->80포트) 

    다시 호스트OS의 가상호스트설정에 아래와같이 추가 
    ========아래========== 
    #!work 
    <VirtualHost *:80> 
    ServerName 서버네임 
    ProxyPass / http://localhost:4123/ 
    ProxyPassReverse / http://localhost:4123/ 
    </VirtualHost> 
    ========아래========== 

    호스트 아파치 재시작, 테스트. 

    결과 : 게스트OS로의 직접적인 이름기반 가상호스트서비스를 이용할 수 는 없으나, 아파치 리버스프록시를 이용한 name based http forwording 을 사용하였다. 
    결과적으로 결과적으로 호스트의  이름기반 가상호스트에 접속하면 그 가상호스트를 통해 내부의 다른 포트로 포워딩 시켜주는 역할을 하도록 설정하였다. (체감속도는 약간 느려진 느낌.) 

    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.