Pluglet 프로젝트는 코딩 환경으로 보면, 거의 Java Project와 동일하게 느껴진다.

그래서, 외부 Jar(JDBC Driver등)를 사용할 때, Java Build 경로의 Library탭에만 JAR를 추가해 주면 컴파일 까지는 여느 Java프로젝트처럼 잘 된다.

하지만, 실행을 할라치면 (internal tools로), 클래스를 못 찾는 다는 에러를 보게된다.

 제일 좋은 방법은, 외부 jar를 plugin으로 만들어서, Pluglet 프로젝트에서 runtime에 plugin을 참조하게 하면 된다.

먼저 RSA70에서 신규 프로젝트 만들기에서 "Plug-in from existing JAR archive"를 선택하고, 포함될 JAR를 선택하여,

플러그인을 만든다.

그런다음 기존의 pluglet 프로젝트에 pluglet.xml에서 다음을 추가한다.

<import plugin="[방금 만든 Plugin ID]"/>
그런 다음 실행해 보자..
 
잘되지 않을까?

혹시나 해서 덧붙이자면, 당연히 코딩할 때는 Build Path에 해당 Jar를 따로 넣어줘야 한다.

pluglet.xml은 runtime에 대한 세팅과도 같은 것이니까...

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

요즘 Junior 동료들과 같이 일주일에 두번 스터디를 진행한다.

진행하면서, Java 기본에 관한 Quiz를 던지곤 하는데, 그러면서, 다시 옛날 기억을 더듬는 기회가 되곤 한다.

 

오랜만에 다시 Pass by Value 냐 Pass by Referece냐라는 질문에..

 

언제나 처럼.. Java는 "Reference를 Pass by Value로 던진다"라고 말한다.

 

참조 URL : http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

요사이 소스를 파싱하여, Meta 정보를 추려내는 기능에 대해 고민하고 있다.

 

자바 Bytecode를 분석하는 것은 ASM등의 라이브러리를 활용하면 되지만, 소스를 파싱하는 것은 그리 쉽지 않았다.

Queue, Stack 써가면서 , 노가다를 쓰면서 소스에서 Field 정보(사이즈, type, padding 등을 파싱하고 있다.)

 

그러던중, split 함수의 유용함을 알게되었다.

함수 이름만 봐서는 단순히 split만 하는 함수인 줄 알았는데, 정규식을 사용할 수 있었던 것이다.

 

문자 파싱에 있어서는 정규식 만한 것이 또 없지 않은가..

 

사실 정규식을 쓰는 것이 아니더라도, 이제까지 substring과 indexOf를 주로 사용해 왔던 나에게는 split이 참 유용하게 활용될 수 있었다.

예를 들어,

다음의 소스에서, 필드명(NextKey)을 추출한다고 생각해 보자.

        String test9 = "byteValue = FormatUtil.getNull(searchIcCardByCunoListRp.getNextKey()).getBytes();";

아래와 같이 간단히 split 두번이면 끝...
        System.out.print( test9.split(".get")[2].trim().split("\\(")[0] );

첫번째 split(".get")은 ".get"이라는 문자열 기준으로 원본 String을 쪼개서 배열를 반환한다.

  즉 [0]=byteValue = FormatUtil, [1]=Null(searchIcCardByCunoListRp, [2]=NextKey()), [3]=Bytes();

세번째 배열값을 받아 다시 split("\\(")을 해주면, NextKey 와 )) 로 나누어 준다.

 

뭐.. 당연하다고 생각할 수도 있으나, 해본 사람은 안다... ^^

 

그리고, 여기다가 정규식들을 써서 파싱한다면, 더욱 금상첨화....

 

예를 들어

다음과 같은 문자열에서, 숫자만 하나 뽑으면 이것이 위에서 찾아낸 Field 의 사이즈가 된다면,

        String test10 = "byteBuffer = FormatUtil.strToByte(byteBuffer, byteValue, 15 - byteValue.length , \"L\",\" \");";
다음과 같이 찾을 수 있다.
        Pattern p = Pattern.compile("(\\d+)");
        Matcher m = p.matcher(test10);
        System.out.println(m.find()? m.group() : 0);

결과는 15 이 된다.

 

그리고, "L"이 정렬에 대한 정보라면, 정규식 보다는 그냥 split을 쓰면

System.out.print( test10.split("\\\"")[1].trim() );

 

또한, " "이 padding 값이 된다면,

System.out.print( test10.split("\\\"")[3].trim() );

 

참조할 만한 링크는 http://www.tutorialspoint.com/java/java_regular_expressions.htm

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

[BCI] 관련 자료

2010/03/04 15:33

요즘 두가지 이유 때문에 ASM을 보고 있다.

하나는 모델과 소스(바이너리)의 비교 검증 기능 개발을 위해서,

또 하나는 APM 솔루션 개발을 위해서, 모니터링용 코드를 기존 어플리케이션에 쉽게 심는 방법을 찾기 위해서..

 

사실 첫번째 이유로의 ASM은 오래전부터 봐왔던 바이지만, 두번째는 좀 생소 하기는 하지만, 한번에 두마리 토끼를 잡는 다는 셈치고 열공 및 개발 중이다.

 

관련 자료/링크를 쭈욱 나열해 놓고, 나중에 한번에 정리해 보자.

 

 

The Power of Byte Code Instrumentation in Java 시리즈(From 욱짜의 Oracle 블로그) : http://ukja.tistory.com/17

 

ASM 홈페이지 http://asm.ow2.org/

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

다음을 참고해 보자.

 

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tjmx_extend.html

 

시작/중지 = launchProcess/stopProcess

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

BLOG main image

공지사항

카테고리

분류 전체보기 (160)
MAMP LAMP (1)
Open Project (4)
Knowhow (57)
JEE Technologies (3)
Rational Products (94)
Etc (0)