Microsoft MVP성태의 닷넷 이야기
Java: 3. 이클립스에서 서블릿 디버깅하는 방법 [링크 복사], [링크+제목 복사],
조회: 38275
글쓴 사람
정성태 (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]

... 151  152  153  154  155  156  157  158  159  160  161  162  [163]  164  165  ...
NoWriterDateCnt.TitleFile(s)
969정성태12/31/201040323VC++: 45. Winsock 2 Layered Service Provider - Visual Studio 2010용 프로젝트 [1]파일 다운로드1
968정성태12/30/201026559개발 환경 구성: 94. 개발자가 선택할 수 있는 윈도우에서의 네트워크 프로그래밍 기술 [2]
967정성태12/27/201028344.NET Framework: 197. .NET 코드 - 단일 Process 실행파일 다운로드1
966정성태12/26/201026312.NET Framework: 196. .NET 코드 - 창 흔드는 효과파일 다운로드1
965정성태12/25/201027791개발 환경 구성: 93. MSBuild를 이용한 닷넷 응용프로그램의 다중 어셈블리 출력 빌드파일 다운로드1
964정성태12/21/2010142957개발 환경 구성: 92. 윈도우 서버 환경에서, 최대 생성 가능한 소켓(socket) 연결 수는 얼마일까? [14]
963정성태12/13/201027838개발 환경 구성: 91. MSBuild를 이용한 닷넷 응용프로그램의 플랫폼(x86/x64)별 빌드 [2]파일 다운로드1
962정성태12/10/201022745오류 유형: 110. GAC 등록 - Failure adding assembly to the cache: Invalid file or assembly name.
961정성태12/10/201099750개발 환경 구성: 90. 닷넷에서 접근해보는 PostgreSQL DB [5]
960정성태12/8/201045046.NET Framework: 195. .NET에서 코어(Core) 관련 CPU 정보 알아내는 방법파일 다운로드1
959정성태12/8/201031862.NET Framework: 194. Facebook 연동 - API Error Description: Invalid OAuth 2.0 Access Token
958정성태12/7/201028845개발 환경 구성: 89. 배치(batch) 파일에서 또 다른 배치 파일을 동기 방식으로 실행 및 반환값 얻기 [2]
957정성태12/6/201031578디버깅 기술: 31. Windbg - Visual Studio 디버그 상태에서 종료해 버리는 응용 프로그램 [3]
953정성태11/28/201036830.NET Framework: 193. 페이스북(Facebook) 계정으로 로그인하는 C# 웹 사이트 제작 [5]
952정성태11/25/201025254.NET Framework: 192. GC의 부하는 상대적인 것! [4]
950정성태11/18/201076631.NET Framework: 191. ClickOnce - 관리자 권한 상승하는 방법 [17]파일 다운로드2
954정성태11/29/201048631    답변글 .NET Framework: 191.1. [답변] 클릭원스 - 요청한 작업을 수행하려면 권한 상승이 필요합니다. (Exception from HRESULT: 0x800702E4) [2]
949정성태11/16/201027165오류 유형: 109. System.ServiceModel.Security.SecurityNegotiationException
948정성태11/16/201035955.NET Framework: 190. 트위터 계정으로 로그인하는 C# 웹 사이트 제작 [7]파일 다운로드1
947정성태11/14/201041645.NET Framework: 189. Mono Cecil로 만들어 보는 .NET Decompiler [1]파일 다운로드1
946정성태11/11/201041463.NET Framework: 188. .NET 64비트 응용 프로그램에서 왜 (2GB) OutOfMemoryException 예외가 발생할까? [1]파일 다운로드1
945정성태11/11/201025006VC++: 44. C++/CLI 컴파일 오류 - error C4368: mixed types are not supported
944정성태11/11/201031463VC++: 43. C++/CLI 컴파일 오류 - error C2872: 'IServiceProvider' : ambiguous symbol could be ...
943정성태11/8/201030580디버깅 기술: 30. windbg ".loadby sos" 명령어 [2]
942정성태11/7/201042175.NET Framework: 187. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 [7]파일 다운로드3
941정성태11/6/201025089.NET Framework: 186. windbg로 확인하는 .NET CLR LCG 메서드(DynamicMethod) [1]파일 다운로드1
... 151  152  153  154  155  156  157  158  159  160  161  162  [163]  164  165  ...