本文介绍如何使用嵌入式Jetty容器在Jersey中集成Webapp应用,前端以最简单的html和jquery方式实现。
业务场景
几乎所有Apache所有的大数据组件自带的Web界面都采用Jersey和内置容器Jetty的实现方案,如HDFS、Spark、Hive、Storm、Nifi、Zeppelin等。
如HDFS服务,后端API和前端Web界面均默认使用50070
端口启动,API为Web界面提供REST接口支持。
Jersey+Jetty方案的优点
(1)前后端使用同一端口,共同存亡,方便服务维护;
(2)使用Jetty作为嵌入式Web容器,无需再维护额外Web容器,节约运维成本。
Jersey集成Webapp
在Jersey中使用嵌入式Web应用,需要jetty-webapp的支持,在maven依赖中加入以下库。
<!--webapp -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${
jetty.version}</version>
</dependency>
在服务器启动类中,使用以下方法创建一个WebAppContext
,然后再将其加入到服务器的处理器中。
private static WebAppContext createWebappContext() {
WebAppContext context = new WebAppContext();
context.setBaseResource(Resource.newClassPathResource("webapp"));
context.setContextPath("/web");
context.setWelcomeF