Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- curr=`dirname $0`/dist
- cp=`echo $(pwd)/$curr/*.jar|sed 's/ /:/g'`
- echo "the classpath:"
- echo $cp
- exec scala -classpath $cp $0 $@
- !#
- import org.eclipse.jetty.server.Server
- import org.eclipse.jetty.server.handler._
- import org.eclipse.jetty.webapp.WebAppContext
- import org.eclipse.jetty.server.nio.SelectChannelConnector
- import org.eclipse.jetty.servlet._
- import tools.nsc.interpreter._
- import tools.nsc.Settings
- import io.Source
- import java.io.File
- import org.scalatra._
- trait PlaceHolder
- println("Please wait while scalatra gets ready for business...")
- val code = """
- import org.scalatra._
- class HelloServlet extends ScalatraServlet {
- %s
- }
- """
- val fileContent = Source.fromFile(new File("./" + args(0) + ".scalatra")).getLines().filter(_.nonEmpty).map(" " + _).mkString("\n ")
- val fullCode = code format fileContent
- val server = new Server
- server setGracefulShutdown 5000
- val connector = new SelectChannelConnector
- connector setPort 4567
- connector setMaxIdleTime 90000
- server addConnector connector
- class ServletLoader {
- var app: ScalatraServlet = null
- }
- val app = new ServletLoader
- val settings = new Settings()
- settings.embeddedDefaults(app.getClass.getClassLoader)
- val i = new IMain(settings)
- i.compileString(fullCode)
- i beQuietDuring {
- i.bind[ServletLoader]("scalatraApp", app)
- i.interpret("scalatraApp.app = new HelloServlet")
- }
- val dynContext = new WebAppContext
- dynContext setContextPath "/"
- dynContext setResourceBase "."
- dynContext setParentLoaderPriority true
- dynContext addServlet (new ServletHolder(app.app), "/*")
- dynContext addServlet (new ServletHolder(new DefaultServlet()), "/")
- val contexts = new ContextHandlerCollection
- contexts setHandlers Array(dynContext)
- server setHandler contexts
- println("Starting server on 4567")
- sys addShutdownHook {
- println("Scalatra bids you farewell")
- }
- server.start()
- server.join()
Add Comment
Please, Sign In to add comment