Notice
Recent Posts
Link
Tags
- java
- static
- SSL
- nginx
- spring mvc
- join
- sql
- spring
- @transactional
- AWS
- spring boot
- string
- 문자열
- PYTHON
- hibernate
- 스프링부트
- springboot
- 스프링
- jpa
- 자바
- mysql
- Docker
- Django
- ORM
- spring security 6
- 프로그래머스
- select
- 데이터베이스
- 1차원 배열
- DI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Archives
개발하는 자몽
[Tomcat Error] java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid 본문
Java & Kotlin
[Tomcat Error] java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid
jaamong 2023. 4. 12. 15:18내장 톰캣을 사용하려고 하다가 아래와 같은 에러가 발생했다.
Caused by: java.lang.IllegalArgumentException: The main resource set specified [...\tomcat\tomcat.8080/webapps] is not valid
원인은 tomcat.addContext(contextPath, docBase)를 하고 webapps 디렉토리가 없어서 발생한 문제다. 경로 설정에 문제가 있는 모양이다...
에러 해결 전 코드 (기존 코드)
import hello.servlet.HelloServlet;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
public class EmbedTomcatServletMain {
public static void main(String[] args) throws LifecycleException {
System.out.println("EmbedTomcatServletMain.main");
//톰캣 설정
Tomcat tomcat = new Tomcat();
Connector connector = new Connector();
connector.setPort(8080);
tomcat.setConnector(connector);
//서블릿 등록
Context context = tomcat.addContext("", "/");
tomcat.addServlet("", "helloServlet", new HelloServlet());
context.addServletMappingDecoded("/hello-servlet", "helloServlet");
tomcat.start();
}
}
참고! HelloServlet은 HttpServlet을 상속한 커스텀 서블릿이다.
에러 해결 코드
import hello.servlet.HelloServlet;
import org.apache.catalina.Context;
import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import java.io.File;
public class EmbedTomcatServletMain {
public static void main(String[] args) throws LifecycleException {
System.out.println("EmbedTomcatServletMain.main");
//톰캣 설정
Tomcat tomcat = new Tomcat();
Connector connector = new Connector();
connector.setPort(8080);
tomcat.setConnector(connector);
//서블릿 등록
Context context = tomcat.addContext("", "/");
// == 코드 추가 시작 ==
File docBaseFile = new File(context.getDocBase());
if (!docBaseFile.isAbsolute()) {
docBaseFile = new File(((Host) context.getParent()).getAppBaseFile(), docBaseFile.getPath());
}
docBaseFile.mkdirs();
// == 코드 추가 종료 ==
tomcat.addServlet("", "helloServlet", new HelloServlet());
context.addServletMappingDecoded("/hello-servlet", "helloServlet");
tomcat.start();
}
}
위 코드를 추가하면 webapps 디렉토리가 생성된다.
참고
내장톰캣 서블릿 강의를 듣는 도중 문제가 생겼습니다. - 인프런 | 질문 & 답변
[질문 내용] 내장톰캣 서블릿 강의 코드를 따라 작성하고 실행하는 도중 아래와 같은 문제가 발생했습니다. 제가 따로 작성한 코드도 없고 그냥 파일생성과 붙여넣기만 했는데.. 실행이 안되네
www.inflearn.com
'Java & Kotlin' 카테고리의 다른 글
[TIL / JPA] 영속성 컨텍스트 (0) | 2024.06.29 |
---|---|
Collections, Collector, stream의 함수 (0) | 2023.05.03 |
리플렉션(Reflection) (0) | 2023.03.28 |
동시성 문제와 쓰레드 로컬 (0) | 2023.03.22 |
Bean Validation - HTTP 메시지 컨버터 (0) | 2023.03.13 |
Comments