본문 바로가기
☕ Java 웹 프로그래밍/Servlet & JSP

[Servlet&JSP] 실행환경 구축 - Tomcat 설치

by 일단연 2023. 5. 23.

* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.

 

2020 Servlet&JSP 프로그래밍

 

www.youtube.com

 

 실행환경 구축 - Tomcat 설치 

1) Apache Tomcat 사이트 접속

 

Apache Tomcat® - Welcome!

The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the

tomcat.apache.org

2) 코어 확인해 Tomcat 9 설치

  • 개발 공부를 위해서라면, 64-bit Windows zip (pgp, sha512)를 설치
  • 서비스가 목적이라면, 32-bit/64-bit Windows Service Installer (pgp, sha512)를 설치
    • 자동 설치되며, 윈도우 서비스 목록(윈도우 버튼에 마우스 오른쪽 버튼>컴퓨터 관리>서비스 및 응용 프로그램>서비스)에 등록됨. 컴퓨터가 부팅되자마자 자동으로 실행된다는 의미

3) 압축 풀고 bin 폴더 > startup.bat 파일 열기

  • 계속 켜져있어야 하는데 그렇지 않고 꺼짐 (오류 발생)
  • 오류가 발생하는 이유
    • 이유 1) JAVA_HOME, CATALINA_HOME 환경 변수가 설정되어 있지 않음
      • 해결
        • 시스템 정보(윈도우 버튼에 마우스 오른쪽 버튼>시스템 정보>고급 시스템 설정>고급>환경 변수 설정
        • 1) 시스템 변수에 JAVA_HOME 추가 
          • JDK를 사용하는 프로그램(예: Tomcat)들은 모두 JDK가 환경 변수로 등록되어 있어야 함
          • 변수 이름: JAVA_HOME
          • 변수 값: C:\Program Files\Java\jdk1.8.0_321 (JDK가 설치되어 있는 위치)
        •  2) 시스템 변수에 CATALINA_HOME 추가
          • 변수 이름: CATALINA_HOME
          • 변수 값: C:\DEV\apache-tomcat-9.0.75 (Tomcat이 설치되어 있는 위치)
    • 이유 2) 다른 Tomcat이 이미 동작 중이어서 포트가 사용 중일 수 있음
      • 해결
        • Tomcat 폴더>conf 폴더>server.xml 파일에서 Server port, Connector port 안 겹치게 설정
          • Tomcat 8 포트
          <Server port="8005" shutdown="SHUTDOWN">
              
              
          <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
              maxParameterCount="1000"
          />
          
          • Tomcat 9 포트
          <Server port="8006" shutdown="SHUTDOWN">
              
              
          <Connector port="8090" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
              maxParameterCount="1000"
          />
          
        • 다른 프로그램과도 포트가 겹치지 않는지 확인
          • 실행(Windows + R)>CMD에 netstat -ano 명령어로 모든 포트 리스트 확인
          • netstat: 프로토콜 통계와 현재 TCP/IP 네트워크 연결을 표시
          • -ano에서 -a: 모든 연결 및 수신 대기포트 표시 / -n: 주소와 포트 번호를 숫자 형식으로 표시 / -o: 각 연결의 소유자 프로세스 ID(=PID) 표시
          • 리스트가 길어서 특정 포트만 확인하고 싶다면 findstr 명령어를 조합
            • netstat -ano | findstr 찾고싶은포트

4) 브라우저에 localhost:Connector port 입력

  • 예: localhost:8090
  • 오류가 나는 경우
    • java.net.SocketTimeoutException: Read timed out
      • ReadTimeOut: 데이터의 양이 많거나 네트워크 속도로 인해 실제 요청이 수신되기까지의 시간이 지나도록 수신이 완료되지 않을 경우 발생하는 에러 > 수신대기시간을 늘려주면 해결됨

  • 해결
    • Tomcat 폴더>conf 폴더>server.xml의 connectionTimeout 값 수정
      • 기본값이 20000 > 99999 (최대값)으로 수정
      <Connector port="8090" protocol="HTTP/1.1"
          connectionTimeout="99999"
          redirectPort="8443"
          maxParameterCount="1000"
      />
      

5) 실행 완료