Guest User

Untitled

a guest
Jan 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. package org.scalatra
  2.  
  3. import org.eclipse.jetty.server.Server
  4. import org.eclipse.jetty.server.handler._
  5. import org.eclipse.jetty.webapp.WebAppContext
  6. import org.eclipse.jetty.server.nio.SelectChannelConnector
  7. import org.eclipse.jetty.servlet._
  8. import tools.nsc.interpreter._
  9. import tools.nsc.Settings
  10. import io.Source
  11. import java.io.File
  12.  
  13.  
  14. object ScalatraMain extends App {
  15. trait PlaceHolder
  16.  
  17. println("Please wait while scalatra gets ready for business...")
  18. val code = """
  19. import org.scalatra._
  20. class HelloServlet extends ScalatraServlet {
  21.  
  22. %s
  23.  
  24. }
  25. """
  26.  
  27. val fileContent = Source.fromFile(new File("./" + args(0) + ".scalatra")).getLines().filter(_.nonEmpty).map(" " + _).mkString("\n ")
  28. val fullCode = code format fileContent
  29.  
  30. val server = new Server
  31. server setGracefulShutdown 5000
  32.  
  33. val connector = new SelectChannelConnector
  34. connector setPort 4567
  35. connector setMaxIdleTime 90000
  36. server addConnector connector
  37.  
  38. val settings = new Settings()
  39. settings.embeddedDefaults(getClass.getClassLoader)
  40. val i = new IMain(settings)
  41. i.compileString(fullCode)
  42.  
  43. class ServletLoader {
  44. var app: ScalatraServlet = null
  45. }
  46. val app = new ServletLoader
  47. i beQuietDuring {
  48. i.bind[ServletLoader]("scalatraApp", app)
  49. i.interpret("scalatraApp.app = new HelloServlet")
  50. }
  51.  
  52. val dynContext = new WebAppContext
  53. dynContext setContextPath "/"
  54. dynContext setResourceBase "."
  55. dynContext setParentLoaderPriority true
  56. dynContext addServlet (new ServletHolder(app.app), "/*")
  57. dynContext addServlet (new ServletHolder(new DefaultServlet()), "/")
  58.  
  59. val contexts = new ContextHandlerCollection
  60. contexts setHandlers Array(dynContext)
  61. server setHandler contexts
  62.  
  63. println("Starting server on 4567")
  64.  
  65. sys addShutdownHook {
  66. println("Scalatra bids you farewell")
  67. }
  68.  
  69. server.start()
  70. server.join()
  71. }
Add Comment
Please, Sign In to add comment