org.eclipse.jetty.servlet.ServletContextHandler Scala Examples
The following examples show how to use org.eclipse.jetty.servlet.ServletContextHandler.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: MetricsServlet.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.{SecurityManager, SparkConf} import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers(conf: SparkConf): Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr, conf) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 2
Source File: HttpServer.scala From amaterasu with Apache License 2.0 | 5 votes |
package org.apache.amaterasu.leader.utilities import org.apache.amaterasu.common.logging.Logging import org.apache.log4j.{BasicConfigurator, Level, Logger} import org.eclipse.jetty.server.handler.ErrorHandler import org.eclipse.jetty.server.{Server, ServerConnector} import org.eclipse.jetty.servlet.{DefaultServlet, ServletContextHandler, ServletHolder} import org.eclipse.jetty.util.log.StdErrLog BasicConfigurator.configure() initLogging() server = new Server() val connector = new ServerConnector(server) connector.setPort(port.toInt) server.addConnector(connector) val context = new ServletContextHandler(ServletContextHandler.SESSIONS) context.setResourceBase(serverRoot) context.setContextPath("/") server.setHandler(context) context.setErrorHandler(new ErrorHandler()) context.setInitParameter("dirAllowed", "true") context.setInitParameter("pathInfoOnly", "true") context.addServlet(new ServletHolder(new DefaultServlet()), "/") server.start() } def stop() { if (server == null) throw new IllegalStateException("Server not started") server.stop() server = null } def initLogging(): Unit = { System.setProperty("org.eclipse.jetty.util.log.class", classOf[StdErrLog].getName) Logger.getLogger("org.eclipse.jetty").setLevel(Level.OFF) Logger.getLogger("org.eclipse.jetty.websocket").setLevel(Level.OFF) } }
Example 3
Source File: Server.scala From orders-aws with Apache License 2.0 | 5 votes |
package works.weave.socks.aws.orders.main import org.eclipse.jetty import org.eclipse.jetty.servlet.ServletContextHandler import org.eclipse.jetty.servlet.ServletHolder import org.glassfish.jersey.servlet.ServletContainer import org.slf4j.LoggerFactory import org.springframework.stereotype.Component import scala.collection.JavaConverters._ import scala.util.control.NonFatal import Server._ @Component class Server(val jerseyApp : JerseyApp) { def run() : Unit = { val port = System.getenv().asScala.getOrElse("PORT", "80").toInt val context = new ServletContextHandler(ServletContextHandler.SESSIONS) context.setContextPath("/") val jettyServer = new jetty.server.Server(port) jettyServer.setHandler(context) val servletContainer = new ServletContainer(jerseyApp) val servletHolder = new ServletHolder(servletContainer) context.addServlet(servletHolder, "/*") val jerseyServlet = servletHolder jerseyServlet.setInitOrder(0) try { Log.info("Starting jetty") jettyServer.start() Log.info("Jetty started") jettyServer.join() Log.info("Jetty exited") } finally { Log.info("Destroying jetty") try { jettyServer.destroy() } catch { case NonFatal(e) => Log.error("Error during Jetty shutdown", e) } } } } object Server { val Log = LoggerFactory.getLogger(classOf[Server]) }
Example 4
Source File: UISuite.scala From BigDatalog with Apache License 2.0 | 5 votes |
package org.apache.spark.ui import java.net.ServerSocket import scala.io.Source import scala.util.{Failure, Success, Try} import org.eclipse.jetty.servlet.ServletContextHandler import org.scalatest.concurrent.Eventually._ import org.scalatest.time.SpanSugar._ import org.apache.spark.LocalSparkContext._ import org.apache.spark.{SparkConf, SparkContext, SparkFunSuite} class UISuite extends SparkFunSuite { private def newSparkContext(): SparkContext = { val conf = new SparkConf() .setMaster("local") .setAppName("test") .set("spark.ui.enabled", "true") val sc = new SparkContext(conf) assert(sc.ui.isDefined) sc } ignore("basic ui visibility") { withSpark(newSparkContext()) { sc => // test if the ui is visible, and all the expected tabs are visible eventually(timeout(10 seconds), interval(50 milliseconds)) { val html = Source.fromURL(sc.ui.get.appUIAddress).mkString assert(!html.contains("random data that should not be present")) assert(html.toLowerCase.contains("stages")) assert(html.toLowerCase.contains("storage")) assert(html.toLowerCase.contains("environment")) assert(html.toLowerCase.contains("executors")) } } } ignore("visibility at localhost:4040") { withSpark(newSparkContext()) { sc => // test if visible from http://localhost:4040 eventually(timeout(10 seconds), interval(50 milliseconds)) { val html = Source.fromURL("http://localhost:4040").mkString assert(html.toLowerCase.contains("stages")) } } } test("jetty selects different port under contention") { val server = new ServerSocket(0) val startPort = server.getLocalPort val serverInfo1 = JettyUtils.startJettyServer( "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) val serverInfo2 = JettyUtils.startJettyServer( "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) // Allow some wiggle room in case ports on the machine are under contention val boundPort1 = serverInfo1.boundPort val boundPort2 = serverInfo2.boundPort assert(boundPort1 != startPort) assert(boundPort2 != startPort) assert(boundPort1 != boundPort2) serverInfo1.server.stop() serverInfo2.server.stop() server.close() } test("jetty binds to port 0 correctly") { val serverInfo = JettyUtils.startJettyServer( "0.0.0.0", 0, Seq[ServletContextHandler](), new SparkConf) val server = serverInfo.server val boundPort = serverInfo.boundPort assert(server.getState === "STARTED") assert(boundPort != 0) Try { new ServerSocket(boundPort) } match { case Success(s) => fail("Port %s doesn't seem used by jetty server".format(boundPort)) case Failure(e) => } } test("verify appUIAddress contains the scheme") { withSpark(newSparkContext()) { sc => val ui = sc.ui.get val uiAddress = ui.appUIAddress val uiHostPort = ui.appUIHostPort assert(uiAddress.equals("http://" + uiHostPort)) } } test("verify appUIAddress contains the port") { withSpark(newSparkContext()) { sc => val ui = sc.ui.get val splitUIAddress = ui.appUIAddress.split(':') val boundPort = ui.boundPort assert(splitUIAddress(2).toInt == boundPort) } } }
Example 5
Source File: MetricsServlet.scala From BigDatalog with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.{SparkConf, SecurityManager} import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers(conf: SparkConf): Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr, conf) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 6
Source File: MetricsServlet.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.{SecurityManager, SparkConf} import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers(conf: SparkConf): Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr, conf) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 7
Source File: MetricsServlet.scala From spark1.52 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.SecurityManager import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) //最终生成处理/metrics/json请求的ServletContextHandler,而请求的真正处理由getMetricsSnapshot方法 //利用fastJson解析,生成 def getHandlers: Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 8
Source File: UISuite.scala From iolap with Apache License 2.0 | 5 votes |
package org.apache.spark.ui import java.net.ServerSocket import scala.io.Source import scala.util.{Failure, Success, Try} import org.eclipse.jetty.servlet.ServletContextHandler import org.scalatest.concurrent.Eventually._ import org.scalatest.time.SpanSugar._ import org.apache.spark.LocalSparkContext._ import org.apache.spark.{SparkConf, SparkContext, SparkFunSuite} class UISuite extends SparkFunSuite { private def newSparkContext(): SparkContext = { val conf = new SparkConf() .setMaster("local") .setAppName("test") .set("spark.ui.enabled", "true") val sc = new SparkContext(conf) assert(sc.ui.isDefined) sc } ignore("basic ui visibility") { withSpark(newSparkContext()) { sc => // test if the ui is visible, and all the expected tabs are visible eventually(timeout(10 seconds), interval(50 milliseconds)) { val html = Source.fromURL(sc.ui.get.appUIAddress).mkString assert(!html.contains("random data that should not be present")) assert(html.toLowerCase.contains("stages")) assert(html.toLowerCase.contains("storage")) assert(html.toLowerCase.contains("environment")) assert(html.toLowerCase.contains("executors")) } } } ignore("visibility at localhost:4040") { withSpark(newSparkContext()) { sc => // test if visible from http://localhost:4040 eventually(timeout(10 seconds), interval(50 milliseconds)) { val html = Source.fromURL("http://localhost:4040").mkString assert(html.toLowerCase.contains("stages")) } } } test("jetty selects different port under contention") { val server = new ServerSocket(0) val startPort = server.getLocalPort val serverInfo1 = JettyUtils.startJettyServer( "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) val serverInfo2 = JettyUtils.startJettyServer( "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) // Allow some wiggle room in case ports on the machine are under contention val boundPort1 = serverInfo1.boundPort val boundPort2 = serverInfo2.boundPort assert(boundPort1 != startPort) assert(boundPort2 != startPort) assert(boundPort1 != boundPort2) serverInfo1.server.stop() serverInfo2.server.stop() server.close() } test("jetty binds to port 0 correctly") { val serverInfo = JettyUtils.startJettyServer( "0.0.0.0", 0, Seq[ServletContextHandler](), new SparkConf) val server = serverInfo.server val boundPort = serverInfo.boundPort assert(server.getState === "STARTED") assert(boundPort != 0) Try { new ServerSocket(boundPort) } match { case Success(s) => fail("Port %s doesn't seem used by jetty server".format(boundPort)) case Failure(e) => } } test("verify appUIAddress contains the scheme") { withSpark(newSparkContext()) { sc => val ui = sc.ui.get val uiAddress = ui.appUIAddress val uiHostPort = ui.appUIHostPort assert(uiAddress.equals("http://" + uiHostPort)) } } test("verify appUIAddress contains the port") { withSpark(newSparkContext()) { sc => val ui = sc.ui.get val splitUIAddress = ui.appUIAddress.split(':') val boundPort = ui.boundPort assert(splitUIAddress(2).toInt == boundPort) } } }
Example 9
Source File: MetricsServlet.scala From iolap with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.SecurityManager import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers: Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 10
Source File: StreamingTab.scala From iolap with Apache License 2.0 | 5 votes |
package org.apache.spark.streaming.ui import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.{Logging, SparkException} import org.apache.spark.streaming.StreamingContext import org.apache.spark.ui.{JettyUtils, SparkUI, SparkUITab} import StreamingTab._ private[spark] class StreamingTab(val ssc: StreamingContext) extends SparkUITab(getSparkUI(ssc), "streaming") with Logging { private val STATIC_RESOURCE_DIR = "org/apache/spark/streaming/ui/static" val parent = getSparkUI(ssc) val listener = ssc.progressListener ssc.addStreamingListener(listener) ssc.sc.addSparkListener(listener) attachPage(new StreamingPage(this)) attachPage(new BatchPage(this)) var staticHandler: ServletContextHandler = null def attach() { getSparkUI(ssc).attachTab(this) staticHandler = JettyUtils.createStaticHandler(STATIC_RESOURCE_DIR, "/static/streaming") getSparkUI(ssc).attachHandler(staticHandler) } def detach() { getSparkUI(ssc).detachTab(this) getSparkUI(ssc).detachHandler(staticHandler) staticHandler = null } } private object StreamingTab { def getSparkUI(ssc: StreamingContext): SparkUI = { ssc.sc.ui.getOrElse { throw new SparkException("Parent SparkUI to attach this tab to not found!") } } }
Example 11
Source File: MasterWebUI.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.deploy.master.ui import scala.collection.mutable.HashMap import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.deploy.master.Master import org.apache.spark.internal.Logging import org.apache.spark.ui.{SparkUI, WebUI} import org.apache.spark.ui.JettyUtils._ def initialize() { val masterPage = new MasterPage(this) attachPage(new ApplicationPage(this)) attachPage(masterPage) attachHandler(createStaticHandler(MasterWebUI.STATIC_RESOURCE_DIR, "/static")) attachHandler(createRedirectHandler( "/app/kill", "/", masterPage.handleAppKillRequest, httpMethods = Set("POST"))) attachHandler(createRedirectHandler( "/driver/kill", "/", masterPage.handleDriverKillRequest, httpMethods = Set("POST"))) } def addProxyTargets(id: String, target: String): Unit = { var endTarget = target.stripSuffix("/") val handler = createProxyHandler("/proxy/" + id, endTarget) attachHandler(handler) proxyHandlers(id) = handler } def removeProxyTargets(id: String): Unit = { proxyHandlers.remove(id).foreach(detachHandler) } } private[master] object MasterWebUI { private val STATIC_RESOURCE_DIR = SparkUI.STATIC_RESOURCE_DIR }
Example 12
Source File: MetricsServlet.scala From drizzle-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.{SecurityManager, SparkConf} import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers(conf: SparkConf): Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr, conf) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 13
Source File: JettyLauncher.scala From NGSI-LD_Experimental with MIT License | 5 votes |
package main import org.eclipse.jetty.server.Server import org.eclipse.jetty.servlet.{DefaultServlet, ServletContextHandler} import org.eclipse.jetty.webapp.WebAppContext import org.scalatra.servlet.ScalatraListener object JettyLauncher extends Configuration { def main(args:Array[String]) = { val port = System.getenv().getOrDefault(Port,DefaultPort).toInt val server = new Server(port) val context = new WebAppContext() context setContextPath "/" context.setResourceBase("src/main/webapp") context.addEventListener(new ScalatraListener) context.addServlet(classOf[DefaultServlet], "/") server.setHandler(context) server.start server.join } }
Example 14
Source File: UISuite.scala From SparkCore with Apache License 2.0 | 5 votes |
package org.apache.spark.ui import java.net.ServerSocket import scala.io.Source import scala.util.{Failure, Success, Try} import org.eclipse.jetty.servlet.ServletContextHandler import org.scalatest.FunSuite import org.scalatest.concurrent.Eventually._ import org.scalatest.time.SpanSugar._ import org.apache.spark.LocalSparkContext._ import org.apache.spark.{SparkConf, SparkContext} class UISuite extends FunSuite { private def newSparkContext(): SparkContext = { val conf = new SparkConf() .setMaster("local") .setAppName("test") .set("spark.ui.enabled", "true") val sc = new SparkContext(conf) assert(sc.ui.isDefined) sc } ignore("basic ui visibility") { withSpark(newSparkContext()) { sc => // test if the ui is visible, and all the expected tabs are visible eventually(timeout(10 seconds), interval(50 milliseconds)) { val html = Source.fromURL(sc.ui.get.appUIAddress).mkString assert(!html.contains("random data that should not be present")) assert(html.toLowerCase.contains("stages")) assert(html.toLowerCase.contains("storage")) assert(html.toLowerCase.contains("environment")) assert(html.toLowerCase.contains("executors")) } } } ignore("visibility at localhost:4040") { withSpark(newSparkContext()) { sc => // test if visible from http://localhost:4040 eventually(timeout(10 seconds), interval(50 milliseconds)) { val html = Source.fromURL("http://localhost:4040").mkString assert(html.toLowerCase.contains("stages")) } } } test("jetty selects different port under contention") { val server = new ServerSocket(0) val startPort = server.getLocalPort val serverInfo1 = JettyUtils.startJettyServer( "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) val serverInfo2 = JettyUtils.startJettyServer( "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) // Allow some wiggle room in case ports on the machine are under contention val boundPort1 = serverInfo1.boundPort val boundPort2 = serverInfo2.boundPort assert(boundPort1 != startPort) assert(boundPort2 != startPort) assert(boundPort1 != boundPort2) serverInfo1.server.stop() serverInfo2.server.stop() server.close() } test("jetty binds to port 0 correctly") { val serverInfo = JettyUtils.startJettyServer( "0.0.0.0", 0, Seq[ServletContextHandler](), new SparkConf) val server = serverInfo.server val boundPort = serverInfo.boundPort assert(server.getState === "STARTED") assert(boundPort != 0) Try { new ServerSocket(boundPort) } match { case Success(s) => fail("Port %s doesn't seem used by jetty server".format(boundPort)) case Failure(e) => } } test("verify appUIAddress contains the scheme") { withSpark(newSparkContext()) { sc => val ui = sc.ui.get val uiAddress = ui.appUIAddress val uiHostPort = ui.appUIHostPort assert(uiAddress.equals("http://" + uiHostPort)) } } test("verify appUIAddress contains the port") { withSpark(newSparkContext()) { sc => val ui = sc.ui.get val splitUIAddress = ui.appUIAddress.split(':') val boundPort = ui.boundPort assert(splitUIAddress(2).toInt == boundPort) } } }
Example 15
Source File: ApplicationServer.scala From udash-demos with GNU General Public License v3.0 | 5 votes |
package io.udash.demos.files.jetty import javax.servlet.MultipartConfigElement import io.udash.demos.files.ApplicationServerContexts import io.udash.demos.files.rpc.{MainRpcEndpoint, MainServerRPC} import org.eclipse.jetty.server.Server import org.eclipse.jetty.server.handler.gzip.GzipHandler import org.eclipse.jetty.server.session.SessionHandler import org.eclipse.jetty.servlet.{DefaultServlet, ServletContextHandler, ServletHolder} class ApplicationServer(val port: Int, resourceBase: String) { private val server = new Server(port) private val contextHandler = new ServletContextHandler contextHandler.setSessionHandler(new SessionHandler) contextHandler.setGzipHandler(new GzipHandler) server.setHandler(contextHandler) def start(): Unit = server.start() def stop(): Unit = server.stop() private val appHolder = { val appHolder = new ServletHolder(new DefaultServlet) appHolder.setAsyncSupported(true) appHolder.setInitParameter("resourceBase", resourceBase) appHolder } contextHandler.addServlet(appHolder, "/*") private val uploadsHolder = { val holder = new ServletHolder(new DemoFileUploadServlet(resourceBase + "/uploads")) holder.getRegistration.setMultipartConfig(new MultipartConfigElement("")) holder } contextHandler.addServlet(uploadsHolder, ApplicationServerContexts.uploadContextPrefix + "/*") private val downloadsHolder = { val holder = new ServletHolder(new DemoFileDownloadServlet(resourceBase + "/uploads", ApplicationServerContexts.downloadContextPrefix)) holder.getRegistration.setMultipartConfig(new MultipartConfigElement("")) holder } contextHandler.addServlet(downloadsHolder, ApplicationServerContexts.downloadContextPrefix + "/*") private val atmosphereHolder = { import io.udash.rpc._ val config = new DefaultAtmosphereServiceConfig[MainServerRPC]((_) => new DefaultExposesServerRPC[MainServerRPC](new MainRpcEndpoint) ) val framework = new DefaultAtmosphereFramework(config) val atmosphereHolder = new ServletHolder(new RpcServlet(framework)) atmosphereHolder.setAsyncSupported(true) atmosphereHolder } contextHandler.addServlet(atmosphereHolder, ApplicationServerContexts.atmosphereContextPrefix + "/*") }
Example 16
Source File: ApplicationServer.scala From udash-demos with GNU General Public License v3.0 | 5 votes |
package io.udash.todo.jetty import io.udash.todo.services.InMemoryTodoStorage import org.eclipse.jetty.server.Server import org.eclipse.jetty.server.handler.gzip.GzipHandler import org.eclipse.jetty.server.session.SessionHandler import org.eclipse.jetty.servlet.{DefaultServlet, ServletContextHandler, ServletHolder} class ApplicationServer(val port: Int, resourceBase: String) { private val server = new Server(port) private val contextHandler = new ServletContextHandler private val appHolder = createAppHolder() private val atmosphereHolder = createAtmosphereHolder() contextHandler.setSessionHandler(new SessionHandler) contextHandler.setGzipHandler(new GzipHandler) contextHandler.getSessionHandler.addEventListener(new org.atmosphere.cpr.SessionSupport()) contextHandler.addServlet(atmosphereHolder, "/atm/*") contextHandler.addServlet(appHolder, "/*") server.setHandler(contextHandler) def start(): Unit = server.start() def stop(): Unit = server.stop() private def createAppHolder() = { val appHolder = new ServletHolder(new DefaultServlet) appHolder.setAsyncSupported(true) appHolder.setInitParameter("resourceBase", resourceBase) appHolder } private def createAtmosphereHolder() = { import io.udash.rpc._ import io.udash.todo.rpc._ val config = new DefaultAtmosphereServiceConfig(_ => new DefaultExposesServerRPC[MainServerRPC](new ExposedRpcInterfaces(InMemoryTodoStorage)) ) val framework = new DefaultAtmosphereFramework(config) val atmosphereHolder = new ServletHolder(new RpcServlet(framework)) atmosphereHolder.setAsyncSupported(true) atmosphereHolder } }
Example 17
Source File: MasterWebUI.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.deploy.master.ui import scala.collection.mutable.HashMap import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.deploy.master.Master import org.apache.spark.internal.Logging import org.apache.spark.ui.{SparkUI, WebUI} import org.apache.spark.ui.JettyUtils._ def initialize() { val masterPage = new MasterPage(this) attachPage(new ApplicationPage(this)) attachPage(masterPage) attachHandler(createStaticHandler(MasterWebUI.STATIC_RESOURCE_DIR, "/static")) attachHandler(createRedirectHandler( "/app/kill", "/", masterPage.handleAppKillRequest, httpMethods = Set("POST"))) attachHandler(createRedirectHandler( "/driver/kill", "/", masterPage.handleDriverKillRequest, httpMethods = Set("POST"))) } def addProxyTargets(id: String, target: String): Unit = { var endTarget = target.stripSuffix("/") val handler = createProxyHandler("/proxy/" + id, endTarget) attachHandler(handler) proxyHandlers(id) = handler } def removeProxyTargets(id: String): Unit = { proxyHandlers.remove(id).foreach(detachHandler) } } private[master] object MasterWebUI { private val STATIC_RESOURCE_DIR = SparkUI.STATIC_RESOURCE_DIR }
Example 18
Source File: MetricsServlet.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import javax.servlet.http.HttpServletRequest import com.codahale.metrics.MetricRegistry import com.codahale.metrics.json.MetricsModule import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.{SecurityManager, SparkConf} import org.apache.spark.ui.JettyUtils._ private[spark] class MetricsServlet( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" val SERVLET_DEFAULT_SAMPLE = false val servletPath = property.getProperty(SERVLET_KEY_PATH) val servletShowSample = Option(property.getProperty(SERVLET_KEY_SAMPLE)).map(_.toBoolean) .getOrElse(SERVLET_DEFAULT_SAMPLE) val mapper = new ObjectMapper().registerModule( new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers(conf: SparkConf): Array[ServletContextHandler] = { Array[ServletContextHandler]( createServletHandler(servletPath, new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr, conf) ) } def getMetricsSnapshot(request: HttpServletRequest): String = { mapper.writeValueAsString(registry) } override def start() { } override def stop() { } override def report() { } }
Example 19
Source File: HttpStreamServer.scala From spark-http-stream with BSD 2-Clause "Simplified" License | 5 votes |
package org.apache.spark.sql.execution.streaming.http import org.apache.spark.internal.Logging import org.eclipse.jetty.server.Server import org.eclipse.jetty.servlet.ServletContextHandler import javax.servlet.ServletConfig import javax.servlet.http.HttpServlet import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse import org.eclipse.jetty.servlet.ServletHolder import scala.collection.JavaConversions class MissingRequiredRequestParameterException(paramName: String) extends RuntimeException(s"missing required request parameter: $paramName") { } class UnsupportedActionException(action: String) extends RuntimeException(s"unsupported action in HTTP request header: $action") { } object HttpStreamServer { def start(httpServletPath: String, httpPort: Int) = { val server = new HttpStreamServer(httpServletPath, httpPort); server.start; server; } } def withActionsHandler[T <: ActionsHandler](actionsHandler: T): T = { this.actionsHandler = actionsHandler; actionsHandler; } def withBuffer(): MemoryBufferAsReceiver = { withActionsHandler(new MemoryBufferAsReceiver()); } def withKafka(bootstrapServers: String): KafkaAsReceiver = { withActionsHandler(new KafkaAsReceiver(bootstrapServers)); } def stop() = { httpStreamServlet.destroy(); if (server != null) server.stop(); } }
Example 20
Source File: ServerMain.scala From udash-core with Apache License 2.0 | 5 votes |
package io.udash package rest.examples import io.udash.rest.RestServlet import org.eclipse.jetty.server.Server import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder} import scala.concurrent.Future class UserApiImpl extends UserApi { def createUser(name: String): Future[User] = Future.successful(User(UserId(0), name)) def getUser(id: UserId): Future[User] = Future.successful(User(id, s"$id-name")) } object ServerMain { def main(args: Array[String]): Unit = { val server = new Server(9090) val handler = new ServletContextHandler handler.addServlet(new ServletHolder(RestServlet[UserApi](new UserApiImpl)), "/*") server.setHandler(handler) server.start() server.join() } }
Example 21
Source File: ApplicationServer.scala From udash-core with Apache License 2.0 | 5 votes |
package io.udash.web.server import io.udash.rest._ import io.udash.rpc._ import io.udash.rpc.utils.{CallLogging, DefaultAtmosphereFramework} import io.udash.web.guide.demos.activity.{Call, CallLogger} import io.udash.web.guide.demos.rest.MainServerREST import io.udash.web.guide.rest.ExposedRestInterfaces import io.udash.web.guide.rpc.ExposedRpcInterfaces import io.udash.web.guide.{GuideExceptions, MainServerRPC} import org.eclipse.jetty.server.Server import org.eclipse.jetty.server.handler.ContextHandlerCollection import org.eclipse.jetty.server.handler.gzip.GzipHandler import org.eclipse.jetty.server.session.SessionHandler import org.eclipse.jetty.servlet.{DefaultServlet, ServletContextHandler, ServletHolder} class ApplicationServer(val port: Int, homepageResourceBase: String, guideResourceBase: String) { private val server = new Server(port) def start(): Unit = { server.start() } def stop(): Unit = { server.stop() } private val homepage = { val ctx = createContextHandler(Array("udash.io", "www.udash.io", "127.0.0.1")) ctx.addServlet(createStaticHandler(homepageResourceBase), "?)*$") spaRewrite.setReplacement("/") rewrite.addRule(spaRewrite) rewrite.setHandler(contexts) rewrite } server.setHandler(rewriteHandler) private def createContextHandler(hosts: Array[String]): ServletContextHandler = { val context = new ServletContextHandler context.setSessionHandler(new SessionHandler) context.setGzipHandler(new GzipHandler) context.setVirtualHosts(hosts) context } private def createStaticHandler(resourceBase: String): ServletHolder = { val appHolder = new ServletHolder(new DefaultServlet) appHolder.setAsyncSupported(true) appHolder.setInitParameter("resourceBase", resourceBase) appHolder } }
Example 22
Source File: MasterWebUI.scala From drizzle-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.deploy.master.ui import scala.collection.mutable.HashMap import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.deploy.master.Master import org.apache.spark.internal.Logging import org.apache.spark.ui.{SparkUI, WebUI} import org.apache.spark.ui.JettyUtils._ def initialize() { val masterPage = new MasterPage(this) attachPage(new ApplicationPage(this)) attachPage(masterPage) attachHandler(createStaticHandler(MasterWebUI.STATIC_RESOURCE_DIR, "/static")) attachHandler(createRedirectHandler( "/app/kill", "/", masterPage.handleAppKillRequest, httpMethods = Set("POST"))) attachHandler(createRedirectHandler( "/driver/kill", "/", masterPage.handleDriverKillRequest, httpMethods = Set("POST"))) } def addProxyTargets(id: String, target: String): Unit = { var endTarget = target.stripSuffix("/") val handler = createProxyHandler("/proxy/" + id, endTarget) attachHandler(handler) proxyHandlers(id) = handler } def removeProxyTargets(id: String): Unit = { proxyHandlers.remove(id).foreach(detachHandler) } } private[master] object MasterWebUI { private val STATIC_RESOURCE_DIR = SparkUI.STATIC_RESOURCE_DIR }