티스토리 뷰

 

스프링부트로 내장서버를 이용하려다 만난 에러이다.

스프링부트(Spring Boot)에는 톰캣이 내장되어 있어, 애플리케이션을 빌드하고 실행하는 것만으도로도 웹 애플리케이션을 서비스 할 수 있다. 톰캣을 따로 설치할 필요 없이 애플리케이션을 바로 실행할 수 있다는 것을 의미한다.

필요시 프로그램에서 코드로 톰캣을 사용할 수 있도록 도와주는 클래스가 있는데 바로 TomcatServletWebServerFactory() 라는 메서드이다.

그리고, 스프링 부트는 톰캣 외에 제티나 언더투어등 다른 서블릿 컨테이너도 지원해며 이를 사용할 수 있도록 ServletWebServerFactory로 추상화를 해놓았다.

 

ServletWebServerFactory를 구현한 클래스는 getWebServer()를 지원해야 하는데, return 타입은 WebServer 이다.

public static void main(String[] args){
	ServletWebServerFactory ServerFactory1 = new TomcatServletWebServerFactory();
	WebServer tomcatWebServer = serverFactory.getWebServer();

	ServletWebServerFactory serverFactory2 = new JettyServletWebServerFactory();
	WebServer jettyWebServer = serverFactroy.getWebServer();
	
	tomcatWebServer.start(); //톰캣서블릿컨테이너 동작!
}

필요한 웹서버를 선택하여 서버공장을 만들고 getWebServer()메소드를 이용해서 우리가 원하는 웹서버를 return 받을 수 있다.

이 때, 톰캣이 정상구동하는 것을 확인 한 후, JettyServletWebServerFactory() 메서드로도 구동되는지 궁금하여 테스트를 하다 만난 에러이다.

 

클래스가 없다..?

https://stackoverflow.com/questions/46707462/java-lang-classnotfoundexception-org-eclipse-jetty-server-request-when-starting

 

java.lang.ClassNotFoundException: org.eclipse.jetty.server.Request when starting with jetty:run-forked and connecting with ssl

I'm using jetty's pushbuilder to push some resources. As these resources are specified from inside the webapp, i can't use jetty's default pushCacheFilter. When i start jetty embedded from my mai...

stackoverflow.com

 

라이브러리가 없기 때문에 Maven 이나 Gradle에 추가해줘야 정상구동 한다는 의미로 보인다.

// https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-util
implementation group: 'org.eclipse.jetty', name: 'jetty-util', version: '9.4.31.v20200723'
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-util</artifactId>
    <version>9.4.31.v20200723</version>
</dependency>
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함