昨天我试着在 Google App Engine for Java (GAE/J) 运行 Lift 程序。对于这两者的设置,你可以从这几个资源获取许多相关的信息。不过,大多信息都是以前在 4 月份写的(51CTO编者注:Google App Engine于今年四月开始支持Java),现在一些东西已经变化了,这些资料,我觉得对于我要运行的应用程序也没有很好的帮助。我还知道一些演示程序,但它们很少提供文档,解释为什么能够运行或不能。
所以,我想我应该写一个短小的总结:我是如何在 GAE/J 上运行我的 Scala Lift 程序。
创建 Lift 程序
我学到的最大教训是 Lift 1.0 不能在 GAE/J 上工作。你可以部署一个 1.0 程序,但会出现有关 Actors 的 HTTP 500 错误。GAE/J 不支持线程,所有 Actors 理所当然无法工作。Lift 开发者不得不编写一些代码来让这个框架变得兼容。因此,你必须使用一个 1.1 的版本。本文中,我使用的是 1.1-M4 版本。(有关Lift框架的一些背景,可参考51CTO之前发布的Scala Lift简介。)
使用 Maven 创建一个 Lift 应用程序是很简单的。关于如何生成一个应用程序模板,在 Lift: Getting Started 指南中,提供了很不错的说明和描述。此外,你还可以按照指南设置你的 Maven 环境。不过,你不能使用那篇文章中介绍的 mvn archetype:generate 命令,因为 archetype 是用于 Lift 1.0 版本的。所以,我们需要修改一些参数,来获得一个 1.1 版本的 archetyp。
使用以下命令生成一个 helloworld 程序:
mvn archetype:generate -U \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-blank \
-DarchetypeVersion=1.1-M4 \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DgroupId=demo.helloworld \
-DartifactId=helloworld \
-Dversion=1.0-SNAPSHOT
就这么简单,你已经创建了一个应用程序。通过下面的命令,你就启动该程序:
cd helloworld
mvn jetty:run
在 Google App Engine 上运行 Lift 程序
为了在 Google 中部署你的程序,你需要一个GAE/J 帐号。一旦获得了一个帐号,你需要注册你的应用程序。对于这一流程,Google 比我写的说明更好。但是,要记住你选择的 application-id,后面你将会用到。最后,下载 GAE/J SDK。将 SDK 解压缩到你的临时目录中。你可以试试下面的命令:
unzip ~/Downloads/appengine-java-sdk-1.2.2.zip \
-d ~/tmp/appengine-java-sdk-1.2.2
既然已经有了 SDK 安装文件,你就可以配置你的Lift程序,以便在 GAE/J 上运行。这只需要一个步骤:
创建一个包含以下内容的文件:
xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>application-id< SPAN>application>
<version>3< SPAN>version>
<system-properties>
<property name="in.gae.j" value="true" />
< SPAN>system-properties>
<sessions-enabled>true< SPAN>sessions-enabled>
<static-files>
<exclude path="/**" />
< SPAN>static-files>
< SPAN>appengine-web-app>
将“application-id”替换为你注册应用程序时选择的 application-id。通过运行以下的命令,你可以使用Maven来完成:
mvn package
这样就可以创建一个war文件和一个目录,其中包含了war文件解压后的内容。后者位于:
$helloworld/target/helloworld-1.0-SNAPSHOT
现在你可以使用下面的命令,在本地运行你的程序:
./tmp/appengine-java-sdk-1.2.2/bin/dev_appserver.sh \
helloworld/target/helloworld-1.0-SNAPSHOT
检查 http://localhost:8080 以前确保你的程序正确地运行,并且与你运行 mvn jetty:run 命令时是相同的。如果正确地运行,那么你在 GAE 上的部署工作已经准备好了。为此,请运行下面的命令:
/tmp/appengine-java-sdk-1.2.2/bin/appcfg.sh update \
helloworld/target/helloworld-1.0-SNAPSHOT
现在,你的程序已经准备好,可以运行了。你应该可以在http://application-id.appspot.com 处查看该程序。
为什么是 Google App Engine?
对于 Scala Lift程序,我很清楚GAE并不是一个最理想的平台:对于我最喜欢的 Scala 语言的一项功能:Actors,你不能使用它。对于我来讲,这个练习是一种非常棒的方式,做到了一石二鸟。一直以来,我都想学习如何使用 Lift 和 GAE/J。由于这两者有点不兼容,对于其中任何一个,我学到的知识都比单独学习其中之一都要多。这也算是一种增效作用,你觉得如何呢?
原文:Scala and Lift on Google App Engine by Joe
分享到:
相关推荐
SpringBoot + SpringData Jpa + Scala + Mysql(java+Scala混编)
搭建eclipse+scala+maven.docx
原始用的jetty做的http接口,最近有时间,研究了下spring boot + scala + spark做大数据计算
这是一个简单实用的scala集成mybatis数据库查询代码,简单明了
基于Spark+Scala+MongoDB的大数据实战,商品推荐系统设计与实现.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做...
Scala+maven安装方法,及scala环境搭建,Scala IDE下载及配置
学习 play2 + scala + mongodb 写的demo,简单的增删改查,适合刚开始学习的
基于java+scala+Python+spark实现的图书推荐系统的设计与实现+详细文档+全部资料(高分毕业设计).zip基于java+scala+Python+spark实现的图书推荐系统的设计与实现+详细文档+全部资料(高分毕业设计).zip ...
hadoop+scala+spakr配置,步骤详细,值得收藏。
徐老师大数据培训Hadoop+HBase+ZooKeeper+Spark+Kafka+Scala+Ambari
word文档在压缩文件里,另有java+hadoop+scala+spark资料。(word文档内容比较粗糙,但能看懂)
win10下搭建Hadoop(jdk+mysql+hadoop+scala+hive+spark),包括jdk的安装、mysql安装和配置,hadoop安装和配置,scala安装和配置,hive安装和配置,spark安装和配置。
基于windows10和jdk1.8的scala+sbt+idea的开发环境的详细安装教程,希望对您有用,后期还会更新,请关注,一起进步,谢谢!
基于Scala+Hadoop+Spark的大数据金融信贷风险控系统源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行...
基于Java+Scala+Spark的图书推荐系统源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的...
基于Scala+Spark+PageRank算法构建仿微博用户好友的分布式推荐系统源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码...
基于Scala+Spark的外卖数据分析和推荐源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok...
基于Scala+Spark的大数据分析心脏病信息源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能...
本txt文档内存有链接,为码云的链接,可使用git进行下载,内容已有一些书籍,包含spring,node,scala,已有scala编程实战,spring编程,node编程,以及我自己学习Elasticsearch的一些经验,欢迎大家下载与在此链接...