Guest User

Untitled

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