2010-10-03
■[Scala][GAE]Scalatra on Google App Engine
Scalatra
Scalatraという、Rubyで言うところのSinatraにinspireされた軽量Webフレームワークがありまして。
それをGoogle App Engineに乗っけてみようと思い立ちましたとさ。
ググったらまずこちらがヒット。
google app engine? - scalatra-user | Google Groups
上記リンクからこちらへ。
scala - How to use SBT (Simple Build Tool) with Google App Engine? - Stack Overflow
でこちらに。
Scalatra設定はこちらを参考。
ScalatraによるWebアプリケーション作成 - sbtを使った開発 - なんとなくな Developer のメモ
sbt環境の準備ができている前提で進めます。
sbtで雛形作製
mkdir helloworld
cd helloworld
sbt
内容を適当に入力。
scalaは2.8.0としておきます。
Plugin
を作成し、下記を入力。
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
を作成し、下記を入力。
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
を作成し、下記を入力。
<?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
を作成し、下記を入力。
<?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 } }
環境変数
APPENGINE_SDK_HOME
を設定しておきます。
sbtを起動
sbtを起動してupdate。
ごりごりいろんなものを落としてくるはず。
ローカルで確認
sbtにて
dev-appserver-start
でローカルサーバー起動。
にアクセスすると
this is test.
の文字が表示されます。
にアクセスすると
foo : xxx
が表示されます。URLのxxxを変えると、表示される文言も変わります。
Google App Engine上にデプロイ
今後
次はScalateを組み込みたいです。
その次はSlim3のデータストア機能で。
トラックバック - http://d.hatena.ne.jp/RKTM/20101003/p1
リンク元
- 16 http://pipes.yahoo.com/pipes/pipe.info?_id=f1ae63990f6d5b9e48ce807a77bb9995
- 6 http://longurl.org
- 5 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP359JP359&q=jboss localhost
- 3 http://twitter.com/
- 3 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&hs=y62&rls=org.mozilla:ja:official&q=ruby+gemファイル&aq=f&aqi=&aql=&oq=&gs_rfai=
- 3 http://www.google.co.jp/search?q=vi+タブで開く&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 3 http://www.google.co.jp/search?q=vim+バックアップファイル&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 3 http://www.instapaper.com/u
- 2 http://fieldnotes.sytes.net/slim3-dev/view/detail_mobile.html?itemId=938
- 2 http://twitter.com/RKTM