Java Servlet 3.1 표준과 WebSocket 을 구현하고 Http Upgrade를 지원
또한 서블릿 배포 환경에서 고성능 Non-Blocking 핸들러를 사용할 수 있음
I/O 부분은 JBoss 프로젝트 중 하나인 XNIO를 이용하여 처리함
Java로 작성된 유연하면서 고성능의 웹서버이며 NIO기반의 blogcking / Non-blocking API를 제공
컴포지션 아키텍처를 제공하여 작은 단위의 용도를 갖는 핸들러들을 연결하여 웹서버를 구축 할 수 있음
컴포지션 아키텍처는 Full Java EE Servlet 3.1 컨테이너에서 부터 Low Level의 Non-blocking 핸들러 또는 그 중간 수준의 기능을 선택을 할 수 있는 유연성을 제공해 줌
쉽게 사용할 수 있는 높은 수준의 Builder API를 통해 완전히 임베딩 할 수 있도록 설계되어 있음
Undertow의 라이프 사이클은 임베딩 애플리케이션에서 완벽하게 제어 할 수 있음
- Lightweight
- Core 라이브러리가 1.3MB 정도로 매우 작으며, 런타임에서 가볍게 동작함
- 단순한 임베드 웹서버일 경우에는 10MB 이하의 힙 사이즈에서도 동작함
- Http 업그레이드 지원
HTTP Upgrade를 사용하여 HTTP상에서 동작하는 다양한 프로토콜을 다중화함
- EJB와 JMS 등 자체 프로토콜을 사용하는 서비스들을 Http를 통해 연결하여 리슨 포트수를 줄임
- 이를 통해 클라우드 환경에서 사용되는 포트의 수를 줄여 동일한 시스템에서 더 많은 서버를 실행할 수 있음
- VM 이나 컨테이너 환경에서 네트워크 포트관리가 어려울때 매우 유용함
- 웹소켓 지원
- JSR-356 을 포함한 웹소켓을 완벽하게 지원
- Servlet 3.1 지원
- 임베드 Servlet 을 포함한 Servlet 3.1 을 지원함. 이것은 servlet 과 native undertow non-blocking 핸들러를 결합하여 배포할 수 있게 함
- 손쉬운 임베딩
- 작은 코드로도 애플리케이션에서 undertow를 포함시킬 수 있으며, standalone으로 실행할 수 있음
- 유연성
- undertow 서버는 핸들러 체인을 통해 설정할 수 있음. 이것은 필요한 기능을 추가하고 제거하는데 있어서 사용하지 않은 것들에 대해서 신경 쓸 필요가 없게 해줌
[참조]
http://www.opennaru.com/jboss/undertow-is-web-server-in-wildfly-and-jboss-eap7/
http://undertow.io/