1. SparkUI中Jetty服务开发(基本接口)
public class ServletContextServer {
public static void main(String[] args) throws Exception {
//创建服务
Server server = new Server(8080);
//构建ContextHandle
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath(“/”);
context.addServlet(new ServletHolder(new HelloServlet()), “/hello”);
//与服务绑定context对象
server.setHandler(context);
//启动服务
server.start();
}
}
2. 程序封装结构
3. WebUIPage 继承结构
4. 启动WebUI: jettyServer
serverInfo = Some(startJettyServer("0.0.0.0", port, handlers, conf, name))
5. 增加Tab,生成Tab下Page对应Servlet的ContextHandle
def attachTab(tab: WebUITab) { tab.pages.foreach(attachPage) tabs += tab}
6. 转化WebUIPage为Servlet,并添加到ServletContextHandler中
def attachPage(page: WebUIPage) {
val pagePath = "/" + page.prefix
val renderHandler = createServletHandler(pagePath, (request: HttpServletRequest) => page.render(request), securityManager, basePath)
val renderJsonHandler = createServletHandler(pagePath.stripSuffix("/") + "/json", (request: HttpServletRequest) => page.renderJson(request), securityManager, basePath)
attachHandler(renderHandler)
attachHandler(renderJsonHandler)
pageToHandlers.getOrElseUpdate(page, ArrayBuffer[ServletContextHandler]()) .append(renderHandler)
}