WAS(Web Application Server)19 728x90 반응형 [톰캣 8.5] 정적 리소스에 CORS 필터가 적용되지 않을 때 현상스프링 프레임워크로 웹 기반 백엔드 시스템을 배포 중에 운영 환경에서 정적 리소스에 CORS 필터가 적용되지 않는 것을 확인하였다. 스프링 프레임워크로 개발한 프로그램을 톰캣에 탑재하여 배포하는 경우에 정적 리소스는 작성한 CORS 필터를 거치지 않기 때문에 발생한 이슈였다.해결 방법톰캣의 web.xml에 아래와 같이 CORS 필터를 설정하면 정적 리소스에도 CORS 필터가 동작한다. corsFilter org.apache.catalina.filters.CorsFilter cors.allowed.origins * cors.allowed.methods .. 2024. 11. 29. 톰캣 가상 호스트 컨텍스트 설정 톰캣 가상 호스트 컨텍스를 설정하는 방법은 아래와 같이 호스트 속성 안에 컨텍스트 속성을 선언하는 것이다. 아래의 사진은 오즈리포트를 위한 톰캣 가상 호스트 컨텍스트가 설정된 화면이다. 2024. 10. 10. 톰캣과 OpenSSL 버전 호환 이슈 "org.apache.tomcat.jni.Error: 70023" 현상톰캣 9에서 HTTPS 프로토콜을 사용하도록 설정하기 위해 네이티브 라이브러리를 사용하려고 했는데 아래와 같이 오류 메시지가 나오면서 정상적으로 동작하지 않았다.SEVERE [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Failed to initialize the SSLEngine. org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform원인 및 해결 방법이는 톰캣과 OpenSSL 버전이 맞지 않아서 발생하는 문제였다. 기존 OpenSSL 버전이 'OpenSSL 3.0.2 15 Mar 2022 (Library.. 2024. 6. 10. [톰캣 9] HTTPS 호스트 설정 톰캣 9에서는 HTTPS 호스트를 두 가지 방법으로 설정할 수 있다.SSLHostConfig 활용아래처럼 HTTPS 통신에 활용할 SSL 정보를 입력할 수 있다. Connector 옵션 활용아래처럼 Connector 옵션에 SSL 정보를 입력할 수 있다. 2024. 6. 7. [톰캣 9] HTTP/2 프로토콜을 사용하도록 설정 톰캣 9는 HTTP/2를 지원한다. 커넥터 설정 부분에서 아래의 내용을 아래의 사진처럼 추가하면 HTTP/2로 잘 동작한다. 2024. 5. 27. [톰캣 9] "The APR based Apache Tomcat Native library was not found" 메시지 해결 아래와 같이 APR 기반 아파치 톰캣 네이티브 라이브러리를 못 찾았다고 메시지가 뜨는 경우가 있다. 일반적으로는 꼭 필요한 기능은 아닌데 HTTP2 등을 사용할거면 해당 라이브러리를 잘 찾도록 설정하는 것이 필요하다.org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-.. 2024. 5. 20. [우분투] 톰캣 시간대 설정 톰캣(Tomcat)은 기본적으로 시스템 시간을 따라가지만 특정 시간대로 설정하는 기능을 지원한다. 톰캣의 시간대를 설정하는 방법은 아래와 같다. 톰캣 시간대 수정 아래의 명령어를 입력하여 톰캣 서비스 설정 파일을 연다. vi /etc/systemd/system/tomcat.service 톰캣 실행 옵션에 아래의 설정값을 입력하는 것인데 원하는 시간대에 맞춰서 GMT 값을 입력할 수 있다. -Duser.timezone=GMT+6 아래의 명령어를 입력하여 수정한 서비스 정보를 불러온다. systemctl daemon-reload 아래의 명령어를 입력하여 톰캣을 재기동한다. systemctl restart tomcat 2023. 7. 12. 톰캣 로그 디렉토리 경로와 자동 삭제 스크립트 작성 및 설정 톰캣이 사용하는 로그 디렉토리는 기본적으로는 톰캣 설치 경로에 위치한 'logs' 디렉토리이다. 하지만 설정에 따라 응용별로 로그 위치를 다르게 할 수 있기 때문에 설정을 잘 확인해야 한다. 로그 디렉토리 위치 나의 경우 두 곳에 로그가 기록되고 있었다. 로그 삭제 쉘 스크립트 작성 아래의 스크립트는 톰캣의 모든 로그가 기록되는 'catalina.out' 파일을 현재 일자를 파일명으로 백업하고 내용을 비운 후 로그 폴더 내에서 생성된지 60일이 초과한 파일을 삭제하는 스크립트이다. 아래의 스크립트를 참고하여 자신의 환경에 맞춰서 로그 삭제 쉘 스크립트를 작성한다. TOMCAT_LOG_DIR={톰캣경로}/logs today=`date "+%Y_%m_%d"` cp $TOMCAT_LOG_DIR/catalina.. 2023. 6. 28. 톰캣이 사용하는 임시 디렉토리 경로 톰캣이 사용하는 임시 디렉토리 경로는 실행할 때 별도로 지정해주지 않는 이상 톰캣 설치 경로의 'temp' 디렉토리이다. 아래의 사진처럼 확인할 수 있다. 윈도우 환경에서는 톰캣이 임시 디렉토리 경로로 환경변수 '%temp%'를 사용한다. 절대 경로는 'C:\Users\계정명\AppData\Local\Temp'이다. 참고문서 "톰캣 CATALINA_TMPDIR 경로 문의", 표준프레임워크 포털, 2020년 7월 9일. @원문보기 "Configure Tomcat to use a different temp directory for file uploads", serverfault, 2009년 5월 28일. @원문보기 2023. 6. 28. 아파치 톰캣 세션 만료 시간 설정 방법 아파치 톰캣(Apache Tomcat)의 세션만료 시간을 설정하는 방법은 총 3가지가 있다. 첫 번째는 자바 코드에 세션만료 시간을 설정하는 방법이고 두 번째는 프로젝트 설정 파일에 설정하는 방법이고 세 번째는 톰캣 설정 파일에 설정하는 방법이다. 우선순위는 첫 번째가 가장 높고 그 다음이 두번째이며 세 번째가 가장 낮은 우선순위이다. 설정 방법은 아래와 같다. 1. 자바 코드 아래와 같이 세션의 'MaxInactiveInterval' 값을 설정하면 세션 만료 시간이 설정된다. session.setMaxInactiveInterval(숫자); 2. 프로젝트 설정 웹앱 프로젝트별로 'web.xml'이라는 파일이 하나씩 있다. 이 파일을 열어서 아래와 같이 세션 만료 시간을 설정할 수 있다. 0 3. 톰캣 설.. 2023. 6. 23. 아파치 톰캣 버전별 스펙(Servlet, JSP, EL, WebSocket) 정보 스펙을 확인하는 이유 자바 기반 웹 응용을 개발할 때는 WAS(Web Application Server)가 지원하는 기능별 버전을 고려하여야 한다. 아파치 톰캣 버전별 스펙 Servlet, JSP, EL, WebSocket 등의 내용이 담긴 톰캣 버전별 스펙 정보는 아래의 표와 같다. 아파치 톰캣 버전 최신 출시 버전 서블릿 (Servlet) JSP EL 웹소켓 (WebSocket) 인증 (JASPIC) 자바(Java) 11.0.x 11.0.0-M1 (alpha) 6.1 4 6 TBD TBD 11 또는 최신 10.1.x 10.1.4 6 3.1 5 2.1 3 11 또는 최신 10.0.x (10.1로 대체) 10.0.27 (10.1로 대체) 5 3 4 2 2 8 또는 최신 9.0.x 9.0.70 4 2.3 .. 2023. 1. 12. 톰캣(Tomcat) HTTP/2 지원 정보 HTTP/1.1이 과거에는 주력이었지만 현재는 HTTP/2가 주력이며 현재 네트워크 환경에서 성능 개선 효과를 볼 수 있기 때문에 톰캣(Tomcat)이 HTTP(HyperText Transfer Protocol) 버전을 어디까지 지원하는지를 조사하였다. 톰캣 HTTP 지원 정보 톰캣은 HTTP/1.1를 모든 버전에서 지원하고 있으며 HTTP/2는 톰캣 8.5 버전 이후부터 지원한다. 톰캣은 HTTP/3는 아직 지원하지 않는다. 참고문서 "Which version?", Apache Tomcat. @원문보기 2022. 12. 29. [CentOS] 톰캣(Tomcat)이 IPv4를 우선 사용하도록 설정 구동할 프로그램이 IPv4 주소만 지원하도록 구현했다면 톰캣(Tomcat) WAS가 IPv4 주소를 우선적으로 사용하도록 설정하는 것이 필요하다. 이클립스에서 개발할 때 설정하는 방법은 아래의 링크에서 설명하였고 본 글에서는 CentOS에서 설정하는 방법을 소개한다. 2022.08.12 - [소프트웨어 개발(Software Development)/톰캣(Tomcat)] - 이클립스에서 톰캣(Tomcat)이 IPv4 주소만 사용하도록 설정 이클립스에서 톰캣(Tomcat)이 IPv4 주소만 사용하도록 설정 톰캣이 IPv4 주소만 사용하도록 설정하는 이유 가장 많이 사용되는 네트워크 주소체계로 IP(Internet Protocol)을 흔히 말한다. IP 주소에는 IPv4와 IPv6라는 두 가지 버전의 주소체계가.. 2022. 10. 5. [CentOS] 톰캣 메모리 조정하는 방법 톰캣 메모리 설정 톰캣을 실행하는 프로그램에서 메모리 설정을 바꾸면 톰캣 메모리를 조정할 수 있다. 보통은 아래 경로에 톰캣을 실행하는 프로그램이 있다. vi /etc/systemd/system/tomcat.service 아래의 사진과 같은 화면이 나타나면 'CATALINA_OPS'의 메모리 설정을 적절하게 수정한다. 'Xms'는 최소값이며 'Xmx'는 최대값이다. 이외에도 세부적으로 여러 설정이 있지만 본 글에서는 다루지 않는다. 설정 반영 아래의 명령어를 입력하여 변경된 설정을 서비스에 반영한다. sudo systemctl daemon-reload 톰캣 재기동 아래의 명령어를 입력하여 변경된 메모리 설정으로 톰캣이 실행되도록 한다. systemctl restart tomcat 메모리 설정이 반영되어 .. 2022. 9. 23. 이클립스에서 톰캣(Tomcat)이 IPv4 주소만 사용하도록 설정 톰캣이 IPv4 주소만 사용하도록 설정하는 이유 가장 많이 사용되는 네트워크 주소체계로 IP(Internet Protocol)을 흔히 말한다. IP 주소에는 IPv4와 IPv6라는 두 가지 버전의 주소체계가 있는데 톰캣(Tomcat)의 경우 둘 다 지원한다. 하지만 이미 개발되어 있는 응용 프로그램이 IPv4만 지원한다면 톰캣이 IPv4 주소만 사용하도록 강제할 필요가 있다. 그렇지 않으면 주소 길이 등의 문제로 해당 응용 프로그램이 온갖 오류가 발생할 것이고 정상적인 동작을 수행할 수 없을 것이다. 톰캣이 IPv4 주소만 사용하도록 설정하는 방법 톰캣을 실행할 때 옵션으로 아래의 내용을 입력하면 된다. 본 글에서는 이클립스(Eclipse) IDE(Integrated Development Environm.. 2022. 8. 12. [이클립스] 톰캣(Tomcat) 인코딩(Encoding) 및 메모리(Memory) 설정 인코딩과 메모리를 설정해야하는 이유 톰캣(Tomcat)이 사용할 인코딩(Encoding)과 메모리(Memory)를 명시적으로 선언하여야 개발할 때 문제가 발생하지 않는다. 인코딩이 맞지 않으면 의도와 다른 데이터가 입력 혹은 출력될 수 있고 사용하는 메모리 크기가 적절하게 선언되지 않으면 톰캣이 메모리 부족 등의 이유로 죽을(Down)수도 있다. 인코딩 및 메모리 설정 방법 본 글에서는 이클립스를 기준으로 톰캣을 설정하는 것을 설명한다. 위와 같이 사진에서 'Open launch configuration'을 클릭하여 톰캣 설정화면으로 이동한다. 인자(Arguments) 탭(Tab)으로 이동한 후 아래의 명령어를 참고하여 위의 사진처럼 입력하고 'OK' 버튼을 누른다. 톰캣 메모리 영역 크기 설정 -Xms.. 2022. 8. 9. 이클립스(Eclipse)가 톰캣(Tomcat) 8.0까지만 지원할 때 상위버전 톰캣을 지원하는 방법 문제 설명 및 해결 방법 아래의 사진처럼 이클립스(Eclipse)가 톰캣(Tomcat) 버전을 8.0까지만 지원하는 경우 해결 방법은 여러가지가 있다. 파일을 열어서 옵션을 직접 수정하는 방법도 있지만 이 글에서는 이클립스 서버 런타임 플러그인을 업데이트하여 상위 버전 톰캣을 지원하는 방법을 설명한다. 아래의 사진처럼 이클립스 'Help' - 'Install New Software...'를 클릭하여 소프트웨어 설치화면으로 이동한다. 'Work with'에 'https://download.eclipse.org/releases/neon'를 입력하면 아래와 같은 화면이 나오는데 'JST Server Adapters' 관련 플러그인을 모두 선택하고 'Next' 버튼을 눌러서 업데이트를 한다. ※ 이클립스 버전에.. 2022. 8. 9. 톰캣(Tomcat) 7에서 톰캣 8로 전자정부(스프링) 프레임워크를 포팅할 때 발생하는 오류 기존 프로젝트를 기반으로 새로운 프로젝트를 진행 중인데 고객의 요청에 따라 톰캣(Tomcat) 7에서 톰캣 8로 기준 버전을 올려야 했다. 그랬더니 아래와 같은 오류가 발생하였다. 톰캣 7과 톰캣 8 간에 패키지명 정책이 달라서 발생한 문제였다. 문제 발생 2022-08-08 14:57:12,830 WARN [org.springframework.web.context.support.XmlWebApplicationContext] Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: Error creating bean .. 2022. 8. 8. 아파치 톰캣(Apache Tomcat) 세션아이디 변경 방법 하나의 도메인에 여러대의 아파치 톰캣(Apache Tomcat)을 구동 중인 경우 같은 세션아이디(JSESSIONID)로 인한 충돌이 발생할 수 있다. 필자의 경우 스프링 시큐리티(Spring Security)를 쓰는 프로젝트를 여러개 구동 중에 다른 웹사이트인데도 불구하고 중복 로그인이 집계되어서 세션아이디를 서로 다르게 아래와 같은 방법으로 설정했다. 1. 프로젝트 'web.xml' 설정 'web.xml' 파일에 세션아이디를 아래와 같이 입력할 수 있다. 600 JSESSIONID 2. 아파치 톰캣 'server.xml' 설정 나는 이 방법을 사용하지 않았지만 이것도 가능하다. 아파치 톰캣 루트 경로로 이동하면 'conf' 라는 폴더가 있는데 이 폴더 안에 'server.xml' 이라는 파일이 있다... 2022. 6. 10. 이전 1 다음