Java의 간단한 웹 서버 소개

블로그

홈페이지홈페이지 / 블로그 / Java의 간단한 웹 서버 소개

Sep 02, 2023

Java의 간단한 웹 서버 소개

작성자: Matthew Tyson 소프트웨어 설계자, InfoWorld | Java 18 릴리스(2022년 3월)에 포함된 가장 편리한 새로운 기능 중 하나는 새로운 Simple Web Server였습니다.

매튜 타이슨

소프트웨어 설계자, InfoWorld |

Java 18 릴리스(2022년 3월)에 포함된 가장 편리한 새로운 기능 중 하나는 새로운 Simple Web Server로, 이를 통해 HTTP 파일 서버를 쉽게 가동하고 구성할 수 있습니다. 또한 간단한 사용 사례를 구축하기 위해 기존 httpserver 패키지를 확장하는 API를 공개합니다. 새로운 Simple Web Server는 모든 Java 개발자가 가방에 갖고 있어야 하는 유용한 도구입니다. 확인 해보자!

Java의 새로운 jwebserver 명령을 사용하면 기본 웹 서버를 간단하게 실행할 수 있습니다. 이는 Python 세계에서 널리 사용되는 SimpleHTTPServer 도구와 유사합니다.

첫 번째 단계는 Java 18 이상 릴리스를 실행하고 있는지 확인하는 것입니다. 현재 실행 중인 릴리스를 확인하려면 java --version을 입력하세요. JDK 설치를 관리하려면 SDKMan을 사용하는 것이 좋습니다. 여러 버전을 저글링하는 데 특히 유용합니다.

Java Simple Web Server로 수행할 수 있는 가장 기본적인 작업은 포트 8000에서 현재 디렉터리를 제공하는 것입니다. 목록 1에 표시된 명령을 입력하기만 하면 됩니다.

여기에서 브라우저로 이동하여 localhost:8000을 방문하면 그림 1과 같이 파일 시스템 목록이 표시됩니다.

명령줄에서 Simple Web Server를 미세 조정하기 위해 수행해야 할 몇 가지 일반적인 작업이 있습니다. 예를 들어 포트, 바인딩할 주소(수신할 네트워크 인터페이스) 및 제공할 디렉터리를 변경할 수 있습니다.

목록 2에서는 포트 8080, 모든 인터페이스 및 /foo/bar 디렉토리에서 수신 대기하는 방법을 볼 수 있습니다.

보시다시피, jwebserver 명령줄 도구를 사용하면 가장 간단한 구문을 사용하여 정적 파일을 제공할 수 있습니다. 다음으로 Simple Web Server API를 살펴보겠습니다.

Simple Web Server Javadoc은 API를 배우기 위한 좋은 출발점입니다. SimpleFileServer 클래스는 com.sun.net.httpserver 패키지에 있습니다. (이 패키지에는 웹 서버 구축을 위한 더 오래되고 낮은 수준의 API도 포함되어 있습니다. httpserver 패키지는 더 간단한 요구 사항에 맞게 해당 기능을 확장합니다.) jwebserver CLI 도구는 SimpleFileServer를 사용하여 작업을 수행하며 프로그래밍 방식으로 사용할 수도 있습니다.

SimpleFileServer 클래스는 GET 및 HTTP/1.1만 처리합니다. 하지만 우리는 그것으로 몇 가지 흥미로운 일을 할 수 있습니다. 예를 들어 Simple Web Server 작업에 대한 이 소개에서는 Google Java 인메모리 파일 시스템 프로젝트를 사용하여 핸들러용 파일 시스템을 가짜로 만드는 방법을 제안합니다.

우리는 메모리에서 가상 파일 시스템을 실제로 제공하기 위해 SimpleFileServer의 FileHandler를 수정하기 위해 메모리 내 파일 시스템의 아이디어를 사용할 것입니다. 그런 다음 httpserver 패키지를 사용하여 가짜 파일 시스템에 가짜 파일을 추가하는 POST를 처리합니다.

시작하려면 다음 명령을 사용하여 빠른 Maven 프로젝트를 생성해 보겠습니다.

이제 새 /jsws 디렉토리에 CD를 넣으세요.

여기에 설명된 대로 pom.xml에서 컴파일러 및 소스 버전을 18로 설정합니다.

다음으로 목록 3에 표시된 대로 Google jimfs를 종속성에 추가합니다.

이제 src/main/java/App.java 파일을 수정하여 가짜 파일 시스템을 제공할 수 있습니다. 목록 4에서 이를 수행하는 코드를 볼 수 있습니다.

목록 4의 아이디어는 java.nio.file API를 구현하지만 가상 파일 시스템과 같이 메모리 내에서 모든 작업을 수행하는 Google의 오픈 소스 jimfs 라이브러리를 사용하여 표준 로컬 파일 시스템 API를 시뮬레이션하는 것입니다. 라이브러리를 사용하면 프로그래밍 방식으로 자신만의 디렉터리 경로와 파일을 정의할 수 있습니다. 따라서 우리는 자체 가상 디렉터리 구조를 만들고 이를 파일 처리기인 SimpleFileServer에 전달합니다.

SimpleFileServer 클래스를 프로그래밍 방식으로 구성합니다.

이는 명령줄에서 본 것처럼 바인딩할 인터넷 주소를 허용합니다. 이 경우 지정되지 않은 인터페이스와 포트 8080을 전달합니다. 그 다음에는 파일 시스템 루트가 옵니다. 이 예에서는 createDirectoryHierarchy() 메서드로 생성된 Path 개체를 제공합니다.