기본 콘텐츠로 건너뛰기

라벨이 자바인 게시물 표시

Example of java class transform with java agent and BCI

Dynamic transform   예제 시나리오 원하는 작업  DB에 요청하는 모든 쿼리를 출력 작업 순서 Agent 작성 ClassFileTransformer 구현 Agent 작성 Java Agent 구성도 Manifest 파일 Manifest-Version: 1.0 Premain-Class: sample.bci.Agent Agent-Class: sample.bci.Agent Can-Redefine-Classes: True must be end with new line - http://docs.oracle.com/javase/tutorial/deployment/jar/modman.html Agent.java /** * example for bci with java agent */ package sample.bci; import java.lang.instrument.Instrumentation; /** * @author k * */ public class Agent { public static void premain(String args, Instrumentation inst) { inst.addTransformer(new JdbcQueryTransformer()); } public static void agentmain(String args, Instrumentation inst) { inst.addTransformer(new JdbcQueryTransformer()); } } JdbcQueryTransformer. java /** * example for bci with java agent */ package sample.bci; import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.IllegalClassFormatException; impor...

Java manifest file

주의! Warning:  The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return. 마지막 줄은 공백 라인이어야 한다. Note:  The contents of the manifest must be encoded in UTF8. 글의 인코딩은 UTF-8이어야 한다.

ubuntu 에서 원격 JMX(Java Management Extensions) 모니터링 가능하게 하기

원격 JMX 모니터링 가능하게 하기   정리  설정 파일 수정 관련 파일 $JAVA_HOME/jre/lib/management/management.properties  내용추가 com.sun.management.jmxremote.port=8991 com.sun.management.jmxremote.ssl=false 톰캣 설정 수정 관련 파일 /etc/default/tomcat7 JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote   password 파일 소유자 및 권한 수정 sudo chown tomcat7.tomcat7 /etc/java-7-openjdk/management/jmxremote.password sudo chmod 600 /etc/java-7-openjdk/management/jmxremote.password    원격 JMX 모니터링 시 설정 설정이 필요한 파일 $JAVA_HOME/jre/lib/management/jmxremote.access $JAVA_HOME/jre/lib/management/jmxremote.password 두 파일이 필요하다는데. Ubuntu 14.04 Java Home Directory 에서 JAVA_HOME은 /usr/lib/jvm/default-java임을알아냈다. 물론, /usr/lib/jvm/default-java/jre/lib/management/jmxremote.access와 같은 직접적인 접근도 가능하다. linux의 주 설정파일 들이 모여있는 디렉토리는 /etc이며, 위의 파일 또한 실제로는 /etc/java-7-openjdk/management/jmxremote.access라는 실제 파일에 ...

Ubuntu 14.04 Java Home Directory

Java Home Directory ubuntu 14.04에서는 java home 기본으로 어디가 설정될까? 설치된 java 확인   dpkg -S jdk or dpkg -S jre 위 명령으로 찾아지는 패키지들을 보면 openjdk-7-jdk openjdk-7-jre 이 두 패키지가 깔린 것을 확인 할 수 있다. 자바 개발을 위한 설치였다면 openjdk-7-jdk가 설치 되어있을 것. 이 패키지가 설치된 파일들을 확인 해 보면 dpkg -L openjdk-7-jdk dpkg -L openjdk-7-jre 목록들 중에 /usr/lib/jvm 이보인다. 이 디렉토리에 뭐가 있는지 확인. ls -l /usr/lib/jvm default-java -> java-1.7.0-openjdk-amd64/ java-1.7.0-openjdk-amd64 -> java-7-openjdk-amd64/ java-7-openjdk-amd64/ 위 와 같은 결과를 볼 수 있는데, 위의 두 디렉토리는 마지막 java-7-openjdk-amd64/의 링크이다. $JAVA_HOME 설정 웹상의 문서들을볼때 $JAVA_HOME/...이라는 설명이 나오는데 이 디렉토리(/usr/lib/jvm/java-7-openjdk-amd64/)를 기준으로 보면 맞아 떨어진다. 따라서 JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ 환경변수로 설정할 수 있다. 하지만 잠시 더 생각해 보면 java는 여러 버전을 설치 할 수 있고 그렇다면 현재는 하나 이지만 더 추가 될 수 있다는 의미다. default-java라는 이름의 의미를 볼 때 강제로 특정한 버전의 자바를 지정하지 않는다면 사용될 기본 버전이라고 생각할 수있다. JAVA_HOME=/usr/lib/jvm/default-java/ 처럼 하는 것이 더 좋을 것이다.