이클립스 원격 디버깅 (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에 오른쪽 마우스를 클릭하여 새로 추가하면 된다.
설정은 아래와 같다.


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

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

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

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

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