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

... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...
NoWriterDateCnt.TitleFile(s)
1730정성태8/11/201422129개발 환경 구성: 234. Royal TS의 터미널(Terminal) 연결에서 한글이 깨지는 현상 해결 방법
1729정성태8/11/201418197오류 유형: 236. SqlConnection - The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.
1728정성태8/8/201430243.NET Framework: 453. C# - 오피스 파워포인트(Powerpoint) 파일을 WinForm에서 보는 방법파일 다운로드1
1727정성태8/6/201420474오류 유형: 235. SignalR 오류 메시지 - Counter 'Messages Bus Messages Published Total' does not exist in the specified Category. [2]
1726정성태8/6/201419385오류 유형: 234. IIS Express에서 COM+ 사용 시 SecurityException - "Requested registry access is not allowed" 발생
1725정성태8/6/201421328오류 유형: 233. Visual Studio 2013 Update3 적용 후 Microsoft.VisualStudio.Web.PageInspector.Runtime 모듈에 대한 FileNotFoundException 예외 발생
1724정성태8/5/201426093.NET Framework: 452. .NET System.Threading.Thread 개체에서 Native Thread Id를 구하는 방법 - 두 번째 이야기 [1]파일 다운로드1
1723정성태7/29/201458313개발 환경 구성: 233. DirectX 9 예제 프로젝트 빌드하는 방법 [3]파일 다운로드1
1722정성태7/25/201421024오류 유형: 232. IIS 500 Internal Server Error - NTFS 암호화된 폴더에 웹 애플리케이션이 위치한 경우
1721정성태7/24/201424035.NET Framework: 451. 함수형 프로그래밍 개념 - 리스트 해석(List Comprehension)과 순수 함수 [2]
1720정성태7/23/201422067개발 환경 구성: 232. C:\WINDOWS\system32\LogFiles\HTTPERR 폴더에 로그 파일을 남기지 않는 설정
1719정성태7/22/201426007Math: 13. 동전을 여러 더미로 나누는 경우의 수 세기(Partition Number) - 두 번째 이야기파일 다운로드1
1718정성태7/19/201435266Math: 12. HTML에서 수학 관련 기호/수식을 표현하기 위한 방법 - MathJax.js [4]
1716정성태7/17/201434977개발 환경 구성: 231. PC 용 무료 안드로이드 에뮬레이터 - genymotion
1715정성태7/13/201430583기타: 47. 운영체제 종료 후에도 USB 외장 하드의 전원이 꺼지지 않는 경우 [3]
1714정성태7/11/201420887VS.NET IDE: 92. Visual Studio 2013을 지원하는 IL Support 확장 도구
1713정성태7/11/201444585Windows: 98. 윈도우 시스템 디스크 용량 확보를 위한 "Package Cache" 폴더 이동 [1]
1712정성태7/10/201432856.NET Framework: 450. 영문 윈도우에서 C# 콘솔 프로그램의 유니코드 출력 방법 [3]
1711정성태7/10/201438042Windows: 97. cmd.exe 창에서 사용할 폰트를 추가하는 방법 [1]
1710정성태7/8/201430572개발 환경 구성: 230. 유니코드의 Surrogate Pair, Supplementary Characters가 뭘까요?파일 다운로드2
1709정성태7/8/201427337VS.NET IDE: 91. Visual Studio에서 32/64비트 IIS Express 실행하는 방법
1708정성태7/7/201424698VS.NET IDE: 90. Visual Studio - 사용자 정의 정적 분석 규칙 만드는 방법 [3]파일 다운로드1
1707정성태7/4/201422982.NET Framework: 449. C#에서 C++로 VARIANT 넘겨주는 방법파일 다운로드1
1706정성태7/3/201421396.NET Framework: 448. .NET SmartClient 컨트롤을 윈도우 8/2012에서 활성화하는 방법파일 다운로드1
1705정성태7/2/201435037VC++: 78. 보이어-무어(Boyer-Moore) 알고리즘이 정말 빠를까? [6]파일 다운로드1
1704정성태7/2/201421632.NET Framework: 447. w3wp.exe AppPool 재생(recycle)하는 방법 정리
... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...