Skip to content

Instantly share code, notes, and snippets.

@agnaldo4j
Created January 21, 2013 11:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agnaldo4j/4585321 to your computer and use it in GitHub Desktop.
Save agnaldo4j/4585321 to your computer and use it in GitHub Desktop.
Jetty embarcado com scala e serviço de rest. outros exemplos de Jetty embarcado http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#Setting_a_Web_Application_Context
package com.softsimples.social
import filter.SecurityFilter
import org.eclipse.jetty.server.{Server, Handler}
import org.eclipse.jetty.server.handler.{HandlerList, ResourceHandler}
import org.eclipse.jetty.servlet.{ServletHolder, ServletContextHandler}
import servlet.{WebSocketHandlerServlet, SocialCollectorHandler}
import com.sun.jersey.spi.container.servlet.ServletContainer
object Boot {
def main(args: Array[String]) {
val context = buildContext()
val resource_handler = buildResourceHandler()
buildServlets(context)
val handlers = buildHandlerList(context, resource_handler)
startServer(handlers)
}
def startServer(handlers:HandlerList) = {
val server = new Server(8080)
server.setHandler(handlers)
server.start
server.join
}
def buildContext(): ServletContextHandler = {
val context = new ServletContextHandler(ServletContextHandler.SESSIONS)
context.setContextPath("/")
context
}
def buildServlets(context:ServletContextHandler) = {
val jerseyServletHolder:ServletHolder = new ServletHolder(new ServletContainer);
jerseyServletHolder.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
jerseyServletHolder.setInitParameter("com.sun.jersey.config.property.packages", "com.softsimples.social.controllers");
//context.addFilter(classOf[SecurityFilter], "/actions/*", 1);
context.addServlet(jerseyServletHolder, "/actions/*")
context.addServlet(new ServletHolder(new SocialCollectorHandler), "/socialCollector/*")
context.addServlet(new ServletHolder(new WebSocketHandlerServlet), "/ws/*")
}
def buildResourceHandler(): ResourceHandler = {
val resource_handler = new ResourceHandler
resource_handler.setDirectoriesListed(true)
resource_handler.setWelcomeFiles(Array[String]("index.html"))
resource_handler.setResourceBase(".")
resource_handler
}
def buildHandlerList(context:ServletContextHandler, resource_handler:ResourceHandler): HandlerList = {
val handlers = new HandlerList
handlers.setHandlers(Array[Handler](context, resource_handler))
handlers
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment