自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google App Engine上的Scala+Lift初試

原創(chuàng)
開(kāi)發(fā) 后端
Google App Engine自從四月開(kāi)始支持Java以來(lái),吸引了很多Java平臺(tái)的開(kāi)發(fā)者進(jìn)來(lái)觀摩?;贘ava平臺(tái)的Scala也可以在Google App Engine上運(yùn)行,雖然目前還無(wú)法使用Actors,不過(guò)Scala Lift的配置本身仍是一次不錯(cuò)的練習(xí)。

【51CTO精選譯文】昨天我試著在 Google App Engine for Java (GAE/J) 運(yùn)行 Lift 程序。對(duì)于這兩者的設(shè)置,你可以從這幾個(gè)資源獲取許多相關(guān)的信息。不過(guò),大多信息都是以前在 4 月份寫的(51CTO編者注:Google App Engine于今年四月開(kāi)始支持Java),現(xiàn)在一些東西已經(jīng)變化了,這些資料,我覺(jué)得對(duì)于我要運(yùn)行的應(yīng)用程序也沒(méi)有很好的幫助。我還知道一些演示程序,但它們很少提供文檔,解釋為什么能夠運(yùn)行或不能。

所以,我想我應(yīng)該寫一個(gè)短小的總結(jié):我是如何在 GAE/J 上運(yùn)行我的 Scala Lift 程序。

創(chuàng)建 Lift 程序

我學(xué)到的***教訓(xùn)是 Lift 1.0 不能在 GAE/J 上工作。你可以部署一個(gè) 1.0 程序,但會(huì)出現(xiàn)有關(guān) Actors 的 HTTP 500 錯(cuò)誤。GAE/J 不支持線程,所有 Actors 理所當(dāng)然無(wú)法工作。Lift 開(kāi)發(fā)者不得不編寫一些代碼來(lái)讓這個(gè)框架變得兼容。因此,你必須使用一個(gè) 1.1 的版本。本文中,我使用的是 1.1-M4 版本。(有關(guān)Lift框架的一些背景,可參考51CTO之前發(fā)布的Scala Lift簡(jiǎn)介。)

使用 Maven 創(chuàng)建一個(gè) Lift 應(yīng)用程序是很簡(jiǎn)單的。關(guān)于如何生成一個(gè)應(yīng)用程序模板,在 Lift: Getting Started 指南中,提供了很不錯(cuò)的說(shuō)明和描述。此外,你還可以按照指南設(shè)置你的 Maven 環(huán)境。不過(guò),你不能使用那篇文章中介紹的 mvn archetype:generate 命令,因?yàn)?archetype 是用于 Lift 1.0 版本的。所以,我們需要修改一些參數(shù),來(lái)獲得一個(gè) 1.1 版本的 archetyp。

使用以下命令生成一個(gè) helloworld 程序:

  1. mvn archetype:generate -U \  
  2. -DarchetypeGroupId=net.liftweb \  
  3. -DarchetypeArtifactId=lift-archetype-blank \  
  4. -DarchetypeVersion=1.1-M4 \  
  5. -DremoteRepositories=http://scala-tools.org/repo-releases \  
  6. -DgroupId=demo.helloworld \  
  7. -DartifactId=helloworld \  
  8. -Dversion=1.0-SNAPSHOT 

就這么簡(jiǎn)單,你已經(jīng)創(chuàng)建了一個(gè)應(yīng)用程序。通過(guò)下面的命令,你就啟動(dòng)該程序:

  1. cd helloworld  
  2. mvn jetty:run 

在 Google App Engine 上運(yùn)行 Lift 程序

為了在 Google 中部署你的程序,你需要一個(gè)GAE/J 帳號(hào)。一旦獲得了一個(gè)帳號(hào),你需要注冊(cè)你的應(yīng)用程序。對(duì)于這***程,Google 比我寫的說(shuō)明更好。但是,要記住你選擇的 application-id,后面你將會(huì)用到。***,下載 GAE/J SDK。將 SDK 解壓縮到你的臨時(shí)目錄中。你可以試試下面的命令:

  1. unzip ~/Downloads/appengine-java-sdk-1.2.2.zip \  
  2. -d ~/tmp/appengine-java-sdk-1.2.2 

既然已經(jīng)有了 SDK 安裝文件,你就可以配置你的Lift程序,以便在 GAE/J 上運(yùn)行。這只需要一個(gè)步驟:

創(chuàng)建一個(gè)包含以下內(nèi)容的文件:

  1. xml version="1.0" encoding="utf-8"?> 
  2. <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
  3. <application>application-idapplication> 
  4. <version>3version> 
  5. <system-properties> 
  6. <property name="in.gae.j" value="true" /> 
  7. system-properties> 
  8. <sessions-enabled>truesessions-enabled> 
  9. <static-files> 
  10. <exclude path="/**" /> 
  11. static-files> 
  12. appengine-web-app> 

將“application-id”替換為你注冊(cè)應(yīng)用程序時(shí)選擇的 application-id。通過(guò)運(yùn)行以下的命令,你可以使用Maven來(lái)完成:

  1. mvn package 

這樣就可以創(chuàng)建一個(gè)war文件和一個(gè)目錄,其中包含了war文件解壓后的內(nèi)容。后者位于:

  1. $helloworld/target/helloworld-1.0-SNAPSHOT 

現(xiàn)在你可以使用下面的命令,在本地運(yùn)行你的程序:

  1. ./tmp/appengine-java-sdk-1.2.2/bin/dev_appserver.sh \  
  2. helloworld/target/helloworld-1.0-SNAPSHOT 

檢查 http://localhost:8080 以前確保你的程序正確地運(yùn)行,并且與你運(yùn)行 mvn jetty:run 命令時(shí)是相同的。如果正確地運(yùn)行,那么你在 GAE 上的部署工作已經(jīng)準(zhǔn)備好了。為此,請(qǐng)運(yùn)行下面的命令:

  1. /tmp/appengine-java-sdk-1.2.2/bin/appcfg.sh update \  
  2. helloworld/target/helloworld-1.0-SNAPSHOT 

現(xiàn)在,你的程序已經(jīng)準(zhǔn)備好,可以運(yùn)行了。你應(yīng)該可以在http://application-id.appspot.com 處查看該程序。

為什么是 Google App Engine?

對(duì)于 Scala Lift程序,我很清楚GAE并不是一個(gè)最理想的平臺(tái):對(duì)于我最喜歡的 Scala 語(yǔ)言的一項(xiàng)功能:Actors,你不能使用它。對(duì)于我來(lái)講,這個(gè)練習(xí)是一種非常棒的方式,做到了一石二鳥。一直以來(lái),我都想學(xué)習(xí)如何使用 Lift 和 GAE/J。由于這兩者有點(diǎn)不兼容,對(duì)于其中任何一個(gè),我學(xué)到的知識(shí)都比單獨(dú)學(xué)習(xí)其中之一都要多。這也算是一種增效作用,你覺(jué)得如何呢?

原文:Scala and Lift on Google App Engine by Joe

【編輯推薦】

  1. 什么是GAE:Google App Engine介紹
  2. 手把手教你在Google App Engine上運(yùn)行PHP
  3. 開(kāi)始您的***個(gè)Google App Engine應(yīng)用
  4. Scala入門介紹:Hello World
  5. Scala編程語(yǔ)言
責(zé)任編輯:yangsai 來(lái)源: 51CTO.com
相關(guān)推薦

2009-04-13 15:48:54

Google AppJavaSun

2009-04-16 09:59:16

Google App PHPJava

2009-06-26 16:32:22

App Engine文檔存儲(chǔ)文檔搜索

2009-06-12 18:21:46

App Engine上

2013-07-30 12:29:19

Google App Google技術(shù)Engine

2009-04-09 09:53:43

GoogleAppEngineJava

2009-08-11 11:23:41

什么是GAEGoogle App

2009-05-22 14:52:33

App Engine免費(fèi)配額

2009-04-08 16:47:11

GoogleApp EngineJava

2010-02-01 09:21:49

GroovyGoogle App Gaelyk

2009-04-09 08:54:07

App EnginegoogleJava

2011-09-06 14:53:01

Google App

2009-04-14 11:01:33

GoogleApp EngineGroovy

2012-08-01 14:12:45

IBMdW

2009-09-10 10:11:44

Google App Java開(kāi)發(fā)2.0

2011-04-15 17:43:15

Google App Google

2009-10-16 09:08:59

App Engine

2009-02-16 09:11:42

Google App SDKGQL

2009-09-02 11:34:09

Google App

2011-09-15 10:29:13

架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)