Scalatra on Google App Engine
Scalatra
Scalatraという、Rubyで言うところのSinatraにinspireされた軽量Webフレームワークがありまして。
それをGoogle App Engineに乗っけてみようと思い立ちましたとさ。
ググったらまずこちらがヒット。
Google グループ
上記リンクからこちらへ。
scala - How to use sbt with Google App Engine? - Stack Overflow
でこちらに。
HelloworldProject.scala · GitHub
Scalatra設定はこちらを参考。
ScalatraによるWebアプリケーション作成 - sbtを使った開発 - なんとなくな Developer のメモ
sbt環境の準備ができている前提で進めます。
Plugin
{root}/project/plugins/Plugins.scala
を作成し、下記を入力。
import sbt._ class Plugins(info: ProjectInfo) extends PluginDefinition(info) { val appenginePlugin = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "2.0" from "http://github.com/downloads/Yasushi/sbt-appengine-plugin/sbt-appengine-plugin-2.0.jar" }
Project
{root}/project/build/HelloworldProject.scala
を作成し、下記を入力。
import sbt._ class HelloworldProject(info: ProjectInfo) extends AppengineProject(info){ val scalatraVersion = "2.0.0-SNAPSHOT" val scalatra = "org.scalatra" %% "scalatra" % scalatraVersion val servletapi = "javax.servlet" % "servlet-api" % "2.5" val scalaToolsSnapshots = "Scala Tools Repository" at "http://nexus.scala-tools.org/content/repositories/snapshots/" val sonatypeNexusSnapshots = "Sonatype Nexus Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" val sonatypeNexusReleases = "Sonatype Nexus Releases" at "https://oss.sonatype.org/content/repositories/releases" val fuseSourceSnapshots = "FuseSource Snapshot Repository" at "http://repo.fusesource.com/nexus/content/repositories/snapshots" }
web.xml
{root}/src/main/webapp/WEB-INF/web.xml
を作成し、下記を入力。
<?xml version="1.0" ?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"> <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>com.rktm.HelloScalatra</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
appengine-web.xml
{root}/src/main/webapp/WEB-INF/appengine-web.xml
を作成し、下記を入力。
<?xml version="1.0"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>yourapplicationname</application> <version>1</version> </appengine-web-app>
scalatra
を作成し、下記を入力。
package com.rktm import org.scalatra.ScalatraServlet class HelloScalatra extends ScalatraServlet { get("/") { "this is test." } get("/:foo") { val x = params("foo") "foo : " + x } }
sbtを起動
sbtを起動してupdate。
ごりごりいろんなものを落としてくるはず。
ローカルで確認
sbtにて
dev-appserver-start
でローカルサーバー起動。
http://localhost:8080/
にアクセスすると
this is test.
の文字が表示されます。
http://localhost:8080/xxx
にアクセスすると
foo : xxx
が表示されます。URLのxxxを変えると、表示される文言も変わります。
今後
次はScalateを組み込みたいです。
その次はSlim3のデータストア機能で。