이클립스 원격 디버깅 (Weblogic)

항상 로컬로 개발해오다 이번 직장에서는 원격 개발서버에 파일을 올리고 확인하는 식의 개발을 하게되었다..

일단 여러가지 불편한점이 많았다..
첫째로 수정된 파일을 일일이 개발서버의 경로로 찾아들어가 upload를 해야했고 이 과정에서 실수로 파일한개씩을 빼먹어 에러가 발생하였다..
더욱 더 문제점은 이 파일을 빼먹었다는 사실을 알기까지 시간이 쫌 걸린다는거...;; 거의 삽질의 연속이다..

둘째로 이클립스의 브레이크포인트 설정하여 디버깅을 할 수 없다는것이다..
이 문제에 대해선 검색을통해 원격디버깅을 알게되었는데 이게 설정하기가 꽤나 까다럽고 각 WAS 서버마다 설정하는게 달랐다..

일단 회사에서는 Weblogic을 사용하기에 이리저리 뒤지다 결국 영문문서를 하나 찾았는데 내가 리눅스를 잘 모르다보니 어떻게해야할지 막막했을뿐이다. 결국 자바팀 과장님의 도움을 받아 웹로직 디버깅모드로 시작하는데 성공

어떤식으로 해결했냐하면
/weblogic/domains/widgetdm 이 경로로 들어가 startW.sh 파일을 Vi 로 열어

USER_MEM_ARGS="-Dwidget -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:SurvivorRatio=8"
export USER_MEM_ARGS
JAVA_OPTIONS="$_JAVA_OPTIONS -Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address=16125"
export JAVA_OPTIONS
mv ./widget.out ./logs/widget.out.`date +'%y%m%d_%H%M%S'`
nohup ./bin/startManagedWebLogic.sh widget t3://localhost:7001 >> ./widget.out 2>&1 &
tail -f widget.out

빨간색 부분을 추가해주었다... 이렇게 설정하고 해당 모듈을 Weblogic에서 start 시키면 디버그 모드로 떠지게 되는데 이때 address 부분의 포트는 각 모듈마다 다르게해야 충돌이 생기지 않는다...

이렇게 디버그 모드로 띄운 후 이클립스에서 간단하게 셋팅을하면 되는데.. 방법은

Run -> Debug Configurations 에 들어간 후, Remote Java Application에 오른쪽 마우스를 클릭하여 새로 추가하면 된다.
설정은 아래와 같다.

etc-image-0


위와같이 설정 후,  이클립스에서 원격디버깅을 할때에는 위의 설정화면의 하단 Debug  버튼을 누르면 활성화 된다....

이제 브레이크 포인트를 걸어 테스트를 진행하면 잘 잡힌다..유후 ^^

한가지 고려할 사항은 원격지 class 파일과 내가 가지고있는 class 파일이 동일해야하며
내 로컬의 이클립스로 어떤 Action에 브레이크 포인트를 걸어놨는데 다른사람이 해당 Action을 호출하는 화면을 시도하면 내 로컬에서 그 프로세스를 잡아버리기에 상대방은 이게 버그가 났거나 오류가 났다고 생각할수도 있으니 미리 개발팀에 알리거나 모듈별로 디버깅을 하는게 좋을듯 싶다.

차후엔 Ant를 이용하여 원격지 개발서버에 파일을 자동으로 올릴 수 있도록 설정하는 방법을 올려보도록 해야겠다..

난 단지 로컬에서 개발하고 싶을뿐이고....ㅠㅠ