Skip to content

Instantly share code, notes, and snippets.

@engie
Created June 29, 2013 16:04
Show Gist options
  • Save engie/5891681 to your computer and use it in GitHub Desktop.
Save engie/5891681 to your computer and use it in GitHub Desktop.
Unable to load resources when running scalatra servlet from local jetty instance.
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 { // this is my entry object as specified in sbt project definition
def main(args: Array[String]) {
val port = if(System.getenv("PORT") != null) System.getenv("PORT").toInt else 8080
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
}
}
import frontend._
import org.scalatra._
import javax.servlet.ServletContext
class ScalatraBootstrap extends LifeCycle {
override def init(context: ServletContext) {
// Mount one or more servlets
context.mount(new FrontendRoutes, "/*")
}
}
package frontend
import org.scalatra.ScalatraServlet
import com.mchange.v2.c3p0.ComboPooledDataSource
import java.util.Properties
import org.slf4j.LoggerFactory
import scala.slick.driver.MySQLDriver.simple._
import Database.threadLocalSession
import java.sql.Timestamp
trait Frontend extends ScalatraServlet {
val logger = LoggerFactory.getLogger(getClass)
val cpds = {
val props = new Properties
val propstream = getClass.getResourceAsStream("/c3p0.properties")
props.load(propstream)
val cpds = new ComboPooledDataSource
cpds.setProperties(props)
logger.info("Created c3p0 connection pool")
cpds
}
def closeDbConnection() {
logger.info("Closing c3po connection pool")
cpds.close
}
val db = Database.forDataSource(cpds)
override def destroy() {
super.destroy()
closeDbConnection
}
}
class FrontendRoutes extends ScalatraServlet with Frontend {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment