Microsoft MVP성태의 닷넷 이야기
Java: 3. 이클립스에서 서블릿 디버깅하는 방법 [링크 복사], [링크+제목 복사],
조회: 38314
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

이클립스에서 서블릿 디버깅하는 방법

지난번 글에서 Java Servlet을 만들어 봤었는데요.

닷넷 개발자가 처음 실습해 본 서블릿
; https://www.sysnet.pe.kr/2/0/1115

개발에 다소 불편한 점이 있지요. 컴파일하고, .class 파일이 생성되었으면 톰캣의 \webapps\ROOT\WEB-INF\classes 폴더에 배포하고, 다시 컴파일 하고 ... 를 반복하는 것은 영~~~ 생산성 면에서 좋지 않습니다.

Visual Studio의 경우에는 개발하는 프로젝트의 폴더 자체가 웹 애플리케이션이 되어 배포할 필요가 없지만, Eclipse라면 이런 부분에 대한 개선을 위해 몇 가지 설정을 추가해 주어야 합니다.

우선, Tomcat 웹 서버와 이클립스의 메뉴 통합을 해야 하는데 다음의 글을 참조하시면 됩니다.

Apache Tomcat Eclipse Integration
; http://www.mulesoft.com/tomcat-eclipse

저는 초보자이므로 ^^ 이번 글에서는 위의 글을 따라해 보도록 하겠습니다. "Help" / "Install New Software..." 메뉴를 선택해서 뜨는 대화창의 "Work with:" / "Add..." 버튼을 눌러서 아래의 항목을 추가해 주고,

The Eclipse Web Tools Platform (WTP) software repository - http://download.eclipse.org/webtools/repository/indigo

Web Tools Platform SDK (WTP SDK) 3.3.0

설치가 완료되었으면, 이제 'Tomcat과 통합된 기능을 제공하는 유형의 프로젝트'를 만들어야 합니다. Visual Studio에 익숙한 개발자라면 단순히 디버깅 메뉴에서 IIS를 프로세스로 지정하는 것으로 해결되는 문제인데, 이클립스에서는 그런 용도의 프로젝트를 만들어야 한다는 것에 다소 의아스럽긴 합니다.

제 예상에는, Visual Studio에서도 라이브러리 프로젝트와 EXE 프로젝트 파일의 차이점이 내부에 있는 옵션에 있듯이, 아마도 이클립스도 'Tomcat과 통합된 기능을 제공하는 유형의 프로젝트'가 다른 일반 프로젝트와는 다른 옵션이 몇 가지 있는 정도가 아닐까 싶습니다. (어쨌든, 저는 여전히 이쪽 분야에 대해서는 초보자이므로, 여기까지만! ^^)

Tomcat과 통합된 프로젝트의 유형이름이 바로 "Dynamic Web Project"입니다. 따라서 "File" / "New" 메뉴에서 "Dynamic Web Project"를 선택합니다. (만약 목록에 없다면 "Other" 항목을 선택하고 "Web" 범주를 찾아보면 됩니다.)

그럼, 아래와 같은 대화창이 나오고 "Target runtime"의 "New Runtime..." 버튼을 누릅니다.

tomcat_integration_1.png

이어서 각종 웹 서버 유형을 나타내는 목록이 나오는데, "Apache" 범주에서 테스트 대상이 되는 Tomcat 버전과 일치하는 항목을 선택합니다. (Tomcat이 설치된 폴더에 가면, "RUNNING.txt" 파일이 있는데 그 안에 보면 버전이 명시되어 있습니다.)

제 경우에는 "Apache Tomcat v6.0"을 선택했습니다.

그다음, 테스트 대상이 되는 톰캣의 설치 폴더를 알려주고,

tomcat_integration_2.png

프로젝트 대화상자를 마치면, 아래와 같이 일반적인 자바 프로젝트와는 다른 유형의 프로젝트가 생성됩니다.

tomcat_integration_3.png

여기가 끝이 아니군요. ^^; "Window" / "Show View" / "Servers" 메뉴를 선택하고, 다음과 같이 마우스 오른쪽 버튼을 눌러 "New" / "Server" 메뉴를 실행합니다.

tomcat_integration_4.png

그럼, "Dynamic Web Project" 생성 시와 유사한 웹 서버 선택 및 설정 창이 뜨고 적당한 값을 입력하고, 'Next' 버튼을 누릅니다.

tomcat_integration_5.png

다음과 같이 프로젝트 선택 창이 나오는데, 아마도 해당 서버에 배포되는 프로젝트들을 지정하는 것 같습니다. (제 경우에는 "FirstServlet" 프로젝트를 추가한 것입니다. - 그나저나, 이런 건 기본적으로 프로젝트 생성 시에 미리 하나 생성해 줘도 될 것 같지 않은가요? ^^;)

tomcat_integration_6.png

이제 완료하면 이클립스의 "Project Explorer"에는 새롭게 "Servers" 노드와 그 하위에 Tomcat 설정 파일을 직접 편집할 수 있는 목록이 제공되고, 별도로 "Servers" 윈도우에는 추가된 Tomcat 서버 목록이 나오고 이를 마우스 두 번 클릭해 주면 아래와 같이 "Overview" 설정을 확인할 수 있습니다.

tomcat_integration_7.png

이것으로 모두 끝!




개인적으로, 개발을 할 때 가장 중요시하는 것이 "F5 디버깅"입니다. 다행히, 이클립스에서 위와 같은 설정을 했으면 서블릿에 대해서 이와 동일하게 디버깅이 가능합니다.

우선, 예제 서블릿을 작성하고 Visual Studio의 "F5 디버깅"에 해당하는 "Alt + Shift + D, R" 단축키를 눌러줍니다. (또는 "Project Explorer"의 서블릿을 담고 있는 프로젝트를 마우스 오른쪽 버튼을 눌러 나오는 메뉴에서 "Debug As" / "Debug on Server"를 선택)

다음은 각각의 기능에 대한 단축키 비교입니다.

  • BP 토글: Visual Studio - F9, Eclipse - "Ctrl + Shift + B"
  • StepInto: Visual Studio - F11, Eclipse - F5
  • StepOver: Visual Studio - F10, Eclipse - F6
  • BP에서 계속 실행: Visual Studio - F5, Eclipse - F8
  • 디버깅 종료: Visual Studio - "Shift + F5", Eclipse - "Ctrl + F2"
  • 디버그 기능 없이 실행: Visual Studio - "Ctrl + F5", Eclipse - "Alt + Shift + X, R"

그런데, "Dynamic Web Project"에서 이런 식으로 실행을 한 경우 웹 페이지에서의 서블릿 실행 경로가 달라지는 군요. 지난번 예제에서는 "http://localhost:8080/servlet/HelloWorld" 경로로 접속할 수 있었는데, 이번에는 "http://localhost:8080/FirstServlet/servlet/HelloWorld"처럼 중간에 프로젝트 명이 들어가야 합니다.

오호~~~ 문제군요. 그렇다면 내부에서 서블릿 간에 링크를 걸 때 "FirstServlet" 문자열을 넣어야 하는데, 정작 예전 글에서의 방식처럼 응용 프로그램을 배포하면 링크들이 모두 깨지는 현상이 발생할 것입니다. (혹시 이에 대해서 아시는 분이 있다면 댓글 부탁드립니다.)




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/21/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2011-09-11 03시01분
이클립스에 WTP SDK가 설치되지 않는다면?
; http://www.sysnet.pe.kr/2/0/1119
정성태
2011-09-12 09시19분
이클립스에 java decompiler 연동하는 방법

Java Decompiler Plugin For Eclipse IDE
; http://www.mkyong.com/java/java-decompiler-plugin-for-eclipse/
정성태
2011-09-12 08시51분
WTP 내에서 서블릿을 실행하는 환경
; http://www.sysnet.pe.kr/2/0/1121
정성태
2011-10-28 03시40분
[cchcc] 도움 많이 됬어요~ 잘 보구 갑니다~
[guest]

... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12640정성태5/13/202120961오류 유형: 716. RDP 연결 - Because of a protocol error (code: 0x112f), the remote session will be disconnected. [1]
12639정성태5/12/202117349오류 유형: 715. Arduino: Open Serial Monitor - The module '...\detection.node' was compiled against a different Node.js version using NODE_MODULE_VERSION
12638정성태5/12/202117589사물인터넷: 63. NodeMCU v1 ESP8266 - 펌웨어 내 파일 시스템(SPIFFS, LittleFS) 및 EEPROM 활용
12637정성태5/10/202117818사물인터넷: 62. NodeMCU v1 ESP8266 보드의 A0 핀에 다중 아날로그 센서 연결 [1]
12636정성태5/10/202118049사물인터넷: 61. NodeMCU v1 ESP8266 보드의 A0 핀 사용법 - FSR-402 아날로그 압력 센서 연동파일 다운로드1
12635정성태5/9/202116364기타: 81. OpenTabletDriver를 (관리자 권한으로 실행하지 않고도) 관리자 권한의 프로그램에서 동작하게 만드는 방법
12634정성태5/9/202114819개발 환경 구성: 572. .NET에서의 필수 무결성 제어 - 외부 Manifest 파일을 두는 방법파일 다운로드1
12633정성태5/7/202117829개발 환경 구성: 571. UAC - 관리자 권한 없이 UIPI 제약을 없애는 방법
12632정성태5/7/202119007기타: 80. (WACOM도 지원하는) Tablet 공통 디바이스 드라이버 - OpenTabletDriver
12631정성태5/5/202117836사물인터넷: 60. ThingSpeak 사물인터넷 플랫폼에 ESP8266 NodeMCU v1 + 조도 센서 장비 연동파일 다운로드1
12630정성태5/5/202118570사물인터넷: 59. NodeMCU v1 ESP8266 보드의 A0 핀 사용법 - CdS Cell(GL3526) 조도 센서 연동파일 다운로드1
12629정성태5/5/202120320.NET Framework: 1057. C# - CoAP 서버 및 클라이언트 제작 (UDP 소켓 통신) [1]파일 다운로드1
12628정성태5/4/202118231Linux: 39. Eclipse 원격 디버깅 - Cannot run program "gdb": Launching failed
12627정성태5/4/202118331Linux: 38. 라즈베리 파이 제로 용 프로그램 개발을 위한 Eclipse C/C++ 윈도우 환경 설정
12626정성태5/3/202118432.NET Framework: 1056. C# - Thread.Suspend 호출 시 응용 프로그램 hang 현상 (2)파일 다운로드1
12625정성태5/3/202116946오류 유형: 714. error CS5001: Program does not contain a static 'Main' method suitable for an entry point
12624정성태5/2/202121413.NET Framework: 1055. C# - struct/class가 스택/힙에 할당되는 사례 정리 [10]파일 다운로드1
12623정성태5/2/202117703.NET Framework: 1054. C# 9 최상위 문에 STAThread 사용 [1]파일 다운로드1
12622정성태5/2/202113542오류 유형: 713. XSD 파일을 포함한 프로젝트 - The type or namespace name 'TypedTableBase<>' does not exist in the namespace 'System.Data'
12621정성태5/1/202118435.NET Framework: 1053. C# - 특정 레지스트리 변경 시 알림을 받는 방법 [1]파일 다운로드1
12620정성태4/29/202121625.NET Framework: 1052. C# - 왜 구조체는 16 바이트의 크기가 적합한가? [1]파일 다운로드1
12619정성태4/28/202121574.NET Framework: 1051. C# - 구조체의 크기가 16바이트가 넘어가면 힙에 할당된다? [2]파일 다운로드1
12618정성태4/27/202119853사물인터넷: 58. NodeMCU v1 ESP8266 CP2102 Module을 이용한 WiFi UDP 통신 [1]파일 다운로드1
12617정성태4/26/202117102.NET Framework: 1050. C# - ETW EventListener의 Keywords별 EventId에 따른 필터링 방법파일 다운로드1
12616정성태4/26/202116807.NET Framework: 1049. C# - ETW EventListener를 상속받았을 때 초기화 순서파일 다운로드1
12615정성태4/26/202114059오류 유형: 712. Microsoft Live 로그인 - 계정을 선택하는(Pick an account) 화면에서 진행이 안 되는 문제
... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...