Created
June 29, 2013 16:04
-
-
Save engie/5891681 to your computer and use it in GitHub Desktop.
Unable to load resources when running scalatra servlet from local jetty instance.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, "/*") | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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