Presentation is loading. Please wait.

Presentation is loading. Please wait.

EXEM (2016.09.29) LTW를 활용한 데이터 수집기 김경식.

Similar presentations


Presentation on theme: "EXEM (2016.09.29) LTW를 활용한 데이터 수집기 김경식."— Presentation transcript:

1 EXEM ( ) LTW를 활용한 데이터 수집기 김경식

2 Why AspectJ LTW? How to use AspectJ LTW Agent Collector Architecture

3 주로 소스코드가 없는 외부 라이브러리를 수정/빌드 하지 않고 변경하기 위해 사용
Why AspectJ LTW? NameNode 객체를 얻기 위해 사용 주로 소스코드가 없는 외부 라이브러리를 수정/빌드 하지 않고 변경하기 위해 사용

4 How to use AspectJ LTW MANIFEST.MF
Can-Redefine-Classes: true Can-Retransform-Classes: true Premain-Class: org.aspectj.weaver.loadtime.Agent

5 How to use AspectJ LTW aop.xml
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" " <!-- aspectj 설정은 META-INF/aop.xml로 암묵적으로 fix됨. --> <aspectj> <!-- -verbose 옵션으로 weaving process 정보 출력 --> <weaver options="-verbose"> <!-- 아래 package를 weave. --> <include within="org.apache.hadoop.hdfs.server.namenode.*"/> <include within="com.exem.flamingo.management.agent.nn.*"/> </weaver> <aspects> <!-- aspect 정의 --> <aspect name="com.exem.flamingo.management.agent.nn.NameNodeAspectJ"/> </aspects> </aspectj>

6 How to use AspectJ LTW @Aspect public class NameNodeAspectJ { private static final Logger LOG = LoggerFactory.getLogger(NameNodeAspectJ.class); /** * org.apache.hadoop.hdfs.server.namenode.NameNode#initialize(Configuration)}에 대한 pointcut */ @Pointcut("execution(* org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(..))") public void aspectTargetMethod() { } /* * NameNodeAspectJ#aspectTargetMethod()} 의 target이 완료 되었을때 method 실행 joinPoint jointpoint */ @After("com.exem.flamingo.management.agent.nn.NameNodeAspectJ.aspectTargetMethod()") public void afterInit(JoinPoint joinPoint) { Namenode2Agent.start(joinPoint.getThis(), joinPoint.getArgs()); } }

7 How to use AspectJ LTW 메인클래스 실행 시 파라미터로 -javaagent:빌드한.jar 파일경로 (aspectjweaver.jar 필요)

8 How to use AspectJ LTW Java Application 구동 시 Premain-Class에 정의된 Class의 premain static method를 invoke 한다. (java.lang.instrument, javadoc) 기본 ClassLoader를 대체하여 aspectj에서 제공하는 WeavingClassLoader 사용 ClassFileTransformer interface의 구현체를 통해 클래스파일의 바이트코드를 변환하고 사용 (AspectJ LTW) 이후 실제 Application의 main method 를 호출 한다.

9 Collector Architecture

10 Q&A Q&A

11


Download ppt "EXEM (2016.09.29) LTW를 활용한 데이터 수집기 김경식."

Similar presentations


Ads by Google