社区编辑申请
注册/登录
Google App Engine上的Scala+Lift初试 原创
开发 后端
Google App Engine自从四月开始支持Java以来,吸引了很多Java平台的开发者进来观摩。基于Java平台的Scala也可以在Google App Engine上运行,虽然目前还无法使用Actors,不过Scala Lift的配置本身仍是一次不错的练习。

【51CTO精选译文】昨天我试着在 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 程序:

  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 

就这么简单,你已经创建了一个应用程序。通过下面的命令,你就启动该程序:

  1. cd helloworld  
  2. mvn jetty:run 

在 Google App Engine 上运行 Lift 程序

为了在 Google 中部署你的程序,你需要一个GAE/J 帐号。一旦获得了一个帐号,你需要注册你的应用程序。对于这***程,Google 比我写的说明更好。但是,要记住你选择的 application-id,后面你将会用到。***,下载 GAE/J SDK。将 SDK 解压缩到你的临时目录中。你可以试试下面的命令:

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

既然已经有了 SDK 安装文件,你就可以配置你的Lift程序,以便在 GAE/J 上运行。这只需要一个步骤:

创建一个包含以下内容的文件:

  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”替换为你注册应用程序时选择的 application-id。通过运行以下的命令,你可以使用Maven来完成:

  1. mvn package 

这样就可以创建一个war文件和一个目录,其中包含了war文件解压后的内容。后者位于:

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

现在你可以使用下面的命令,在本地运行你的程序:

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

检查 http://localhost:8080 以前确保你的程序正确地运行,并且与你运行 mvn jetty:run 命令时是相同的。如果正确地运行,那么你在 GAE 上的部署工作已经准备好了。为此,请运行下面的命令:

  1. /tmp/appengine-java-sdk-1.2.2/bin/appcfg.sh update \  
  2. 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

【编辑推荐】

  1. 什么是GAE:Google App Engine介绍
  2. 手把手教你在Google App Engine上运行PHP
  3. 开始您的***个Google App Engine应用
  4. Scala入门介绍:Hello World
  5. Scala编程语言
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2022-05-11 08:23:54

自动化测试软件测试

2022-05-13 09:27:55

Widget机票业务App

2022-05-07 15:31:19

物联网5G智慧城市

2022-04-08 14:21:56

App个性化推荐算法推荐管理

2022-03-16 13:55:21

APP信息安全

2022-04-02 20:11:50

智慧交通灯鸿蒙操作系统

2022-04-19 11:09:13

Wi-Fi IoT智能小车鸿蒙

2022-02-18 09:56:39

2022-04-18 16:25:17

办公软件钉钉飞书

2022-01-26 09:00:00

数据库SnowparkSQL

2022-03-07 11:15:25

Pinia状态库vue3

2022-04-18 10:36:48

社交软件聊天平台rocket.cha

2022-04-22 13:07:44

微信

2009-12-11 10:45:00

Scala讲座类型系统功能

2009-10-16 09:08:59

App Engine

2022-04-12 12:06:49

智能小车Wi-Fi IoT鸿蒙

2009-04-13 15:48:54

Google AppJavaSun

2022-04-14 17:53:50

携程AWS上云

2022-03-16 15:08:11

数据安全个人信息

2019-12-25 10:46:13

Python 开发编程语言

同话题下的热门内容

Python 字符串总结,建议收藏!这份Java日志格式规范,拿走不谢!Mybatis-Plus官方发布分库分表神器,一个依赖轻松搞定!后端思维篇:如何应用设计模式优化代码改变 Python 对象规则的黑魔法 Metaclass几种限流算法的Go语言实现JMeter关联之正则表达式提取器在 Go 中实现一个支持并发的 TCP 服务端

编辑推荐

使用Kotlin做开发一个月后的感想面试官问你什么是消息队列?把这篇甩给他!五大自动化测试的Python框架图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)2018年最流行的十大编程语言,其中包括你用的语言吗?
我收藏的内容
点赞
收藏

51CTO技术栈公众号