넷빈즈 플랫폼(Netbeans Platform) 개발시, 리펙토링 후 발생하는 익셉션의 원인과 해결방법.

넷빈즈에는 스윙으로 윈도우즈 어플리케이션 개발을 편하게 할 수 있도록 도와주는
넷빈즈 플랫폼(Netbeans Platform)이 내장되어있다.
넷빈즈 플랫폼은, 간단히 말해 넷빈즈IDE를 어플리케이션 구동 환경으로 사용하여 그위에 필요한 어플리케이션을 플러그인
개념으로 개발하여, 넷빈즈위에 뚝딱뚝딱 얹기만해서 하나의 완성된 위도우즈 어플리케이션을 완성하도록하는 기능이다.

넷빈즈 플랫폼으로 작성된 다양한 상용/비상용 어플리케이션 스크린 샷은 여기서 볼 수 있다.

넷빈즈 플랫폼 으로 스윙어플 개발 시 다른 개발자의 모듈을 CVS에서 체크아웃 받거나 리펙토링 기능으로 패키지 리팩토링 후
프로젝트를 실행하면 아래 그림과 같은 익셉션 발생 하는 경우가 발생한다.


넷빈즈 플랫폼 익셉션

넷빈즈 플랫폼 익셉션

< 패키지 리팩토링 후 프로젝트 실행 시 익셉션 발생 화면 >

 
넷빈즈 5.0 플랫폼으로 스윙어플 작성시 패키지를 리펙토링을 수행하면
소스, layer.xml, mainfast 파일을 자동으로 수정 해 주지만 리펙토링 해 주는 부분을
잘 확인 해 보면 몇몇 부분은 자동으로 리펙토링 해 주지 않는 부분이 있음을확인 할 수 있다.
 
예를 들면 소스내에 패키지 명을 String 문자열로 기록 해 둔 부분이라든지
소스 생성 시 layer.xml등에서 auto generation 해 준 코드 부분이 있다.
 
좀 더 구체적인 예를 들면 넷빈즈 5.0 플랫폼으로 스윙어플을 작성하면
메뉴바를 구성하는  ***Action.java 클래스를 생성하는데
여기에 메뉴바에 표시할 아이콘 정보를
 
protected String iconResource() {
   return "com/prompt/csont/mokrokstatus/Connect.png";
}

와 같은 메소드로 표현 하고 있다.
 
 ***Action.java 소스에 기술해 둔 아이콘 경로값은 String 문자열이기 때문에 리펙토링 대상이 되지 않는 상태에서
패키지 리펙토링이 이루어지고 나면 실제 수행시 아이콘 이미지 파일을 칮을 수 없어 위 와 같은 익셉션 발생한다.

아직까지 이런 부분은 수작업으로 교정 해 주는 수 밖에 없다.
 

2007/08/10 18:48 2007/08/10 18:48
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

RFID 리더 에뮬레이터 :: RFID Reader Emulator

본 프로그램은 직장에서 제가 속한 팀이 제작하고 있는 RFID Middleware 개발에 따른 부산물입니다.
소스를 공개하기가 부끄러운 수준 이지만, RFID관련 하여 공부를 하신다거나 현장에서 개발을 하시는 분들께
이 코드가 또다른 영감을 줄 수 있다면 그걸로도 보람은 있으리라 생각 됩니다.

2007년 8월 현재 Thingmagic社의 Mercury 5 리더Intermec社의 IF5 리더 에뮬레이션이 준비되어 있습니다.
솔직히 현재 버전은 리더 에뮬레이터라기보다는 미들웨어에 부하를 주기위한 태그 데이터 발생기/더미 리더 성향이 강합니다.
저도 이런 저런 기능을 구현 해 보고 싶은 충동은 느끼나 이 코드는 RFID Middleware 개발에 따른 부산물로
여기에 정신을 쏟을 여력이 부족함을 안타깝게 생각 합니다.

짬짬히 다른 더미 리더도 구현 해 보고 싶지만 RFID 미들웨어가 회사 주력 솔루션도 아니고, 더욱이
실제 리더 없이 스펙문서만으로 구현하기 까다로운 면이 있어서 다른 리더에 대한 구현은 어찌 될 지 모르겠습니다.
자바 서버-소켓프로그램 경험이 있으시다면 소스와 각 리더의 스펙문서를 참조하여 해당 리더에뮬레이터 구현은  쉽게 되리라 생각합니다.

리더 에뮬레이션 소스를 보시면 아시겠지만 리더 에뮬레이터는 의외로 단순한 서버소켓으로 작동 하고 있습니다.
클라이언트에서 각 리더에 데이터 요청 신호를 보냈다는 가정하에 리더 에뮬레이터는 몇개의 태그 데이타를 수신한것 처럼 동작하게 됩니다.
리더에뮬레이터에서 발생하는 태그 데이터를 보기 위해서는 클라이언트 소켓 프로그래밍을 하실 필요가 있습니다.
소켓프로그래밍을 해 보셨다면 클라이언트를 쉽게 구현 하실 수 있을 겁니다.

매뉴얼 펼치기..



class diagram
클래스 다이어그램


본 프로그램의 구동 환경은 다음과 같습니다.
 JRE 1.4 이상. ( 소스 빌드시 JDK 5.0 이상 )
 MS Windows 혹은 Linux/Unix의 X-Window나 그에 준하는 GUI환경.

본 프로그램의 코드에는 다음과 같은 기법이 이용 되었습니다.
ServerSocket
Swing
Thread
JAVA Interface
Timer/TimerTask

마지막으로, 코드 수정과 개인적인 사용은 가능하지만 재배포와 상업적 이용은 허락하지 않습니다.

다운로드
리더 에뮬레이터 자체는 수백 kbyte수준이지만 JDK를 포함하고 있어
용량이 30mb 정도 됩니다.
파일을 다운로드 받으신 후 적당한 디렉토리에 압축을 해제 하시면
실행 프로그램과 소스, 매뉴얼을 보실 수 있습니다.
2007/08/10 13:48 2007/08/10 13:48
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다