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

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