Java에서 Jetty 9 서버 생성 및 구성

1. 개요

이 기사에서는 프로그래밍 방식으로 Jetty 인스턴스를 만들고 구성하는 방법에 대해 설명합니다.

Jetty는 가볍고 쉽게 삽입 할 수 있도록 설계된 HTTP 서버 및 서블릿 컨테이너입니다. 하나 이상의 서버 인스턴스를 설정하고 구성하는 방법을 살펴 보겠습니다.

2. Maven 종속성

시작하려면 다음 Maven 종속성이있는 Jetty 9를 pom.xml에 추가해야합니다 .

 org.eclipse.jetty jetty-server 9.4.8.v20171121   org.eclipse.jetty jetty-webapp 9.4.8.v20171121 

3. 기본 서버 생성

Jetty로 임베디드 서버를 가동하는 것은 다음과 같이 작성하는 것만 큼 쉽습니다.

Server server = new Server(); server.start();

종료하는 것도 똑같이 간단합니다.

server.stop();

4. 핸들러

이제 서버가 실행 중이므로 수신 요청을 처리하는 방법을 알려줘야합니다. 이는 Handler 인터페이스를 사용하여 수행 할 수 있습니다 .

직접 만들 수도 있지만 Jetty는 이미 가장 일반적인 사용 사례에 대한 일련의 구현을 제공합니다. 그 중 두 가지를 살펴 보겠습니다.

4.1. WebAppContext

WebAppContext의 클래스는 기존 웹 응용 프로그램에 처리 요청을 위임 할 수 있습니다. 애플리케이션은 WAR 파일 경로 또는 webapp 폴더 경로로 제공 될 수 있습니다.

"myApp"컨텍스트에서 애플리케이션을 노출하려면 다음과 같이 작성합니다.

Handler webAppHandler = new WebAppContext(webAppPath, "/myApp"); server.setHandler(webAppHandler);

4.2. HandlerCollection

복잡한 응용 프로그램의 경우 HandlerCollection 클래스를 사용하여 둘 이상의 처리기를 지정할 수도 있습니다 .

두 개의 사용자 정의 핸들러를 구현했다고 가정하십시오. 첫 번째는 로깅 작업 만 수행하는 반면 두 번째는 실제 응답을 생성하여 사용자에게 다시 보냅니다. 들어오는 각 요청을이 순서대로 처리하고 싶습니다.

방법은 다음과 같습니다.

Handler handlers = new HandlerCollection(); handlers.addHandler(loggingRequestHandler); handlers.addHandler(customRequestHandler); server.setHandler(handlers);

5. 커넥터

다음으로 할 일은 서버가 수신 할 주소와 포트를 구성하고 유휴 시간 제한을 추가하는 것입니다.

서버 클래스는 특정 포트 나 주소에 바인딩하는 데 사용할 수있는 두 편의 생성자를 선언합니다.

작은 응용 프로그램을 다룰 때는 괜찮을 수 있지만 다른 소켓에서 여러 연결을 열려면 충분하지 않습니다.

이 상황에서 Jetty는 커넥터 인터페이스와보다 구체적으로 다양한 연결 구성 매개 변수를 정의 할 수 있는 ServerConnector 클래스를 제공합니다 .

ServerConnector connector = new ServerConnector(server); connector.setPort(80); connector.setHost("169.20.45.12"); connector.setIdleTimeout(30000); server.addConnector(connector);

이 구성을 사용하면 서버는 169.20.45.12:80에서 수신 대기합니다. 이 주소에 설정된 각 연결의 시간 제한은 30 초입니다.

다른 소켓을 구성해야하는 경우 다른 커넥터를 추가 할 수 있습니다.

6. 결론

이 빠른 자습서에서는 Jetty로 임베디드 서버를 설정하는 방법에 중점을 두었습니다. 또한 핸들러커넥터를 사용하여 추가 구성을 수행하는 방법도 살펴 보았습니다 .

항상 그렇듯이 여기에 사용 된 모든 코드는 GitHub에서 찾을 수 있습니다.