Google App Engine 可让您在 Google 的基础架构上运行您的网络应用程序。App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务。
您可以使用 Google 企业应用套件通过自己的域名(例如 http://www.example.com/
)提供应用程序。或者,您可以使用 appspot.com
域上的免费域名来为您的应用程序提供服务。您可以与全世界的人共享您的应用程序,也可以限制为只有贵组织的成员可以访问。
应用程序环境
通过 Google App Engine,即使在负载很重和数据量极大的情况下,也可以轻松构建能安全运行的应用程序。App Engine 包括以下功能:
- 动态网络服务,提供对常用网络技术的完全支持
- 持久存储空间,支持查询、分类和事务
- 自动扩展和负载平衡
- 用于对用户进行身份验证和使用 Google 帐户发送电子邮件的 API
- 一种功能完整的本地开发环境,可以在您的计算机上模拟 Google App Engine
- 用于在指定时间和定期触发事件的计划任务
您的应用程序可在以下两个运行时环境之一中运行:Java 环境和 Python 环境。各环境均为网络应用程序开发提供标准协议和常用技术。
沙盒
应用程序在安全环境中运行,该安全环境仅提供对基础操作系统的有限访问权限。这些限制让 App Engine 可以在多个服务器之间分发应用程序的网络请求,并可以启动和停止服务器以满足访问量需求。沙盒将您的应用程序隔离在它自己的安全可靠环境中,该环境与网络服务器的硬件、操作系统和物理位置无关。
安全沙盒环境的限制示例包括:
- 应用程序只能通过提供的网址抓取以及电子邮件服务访问互联网中的其他计算机。其他计算机只能通过在标准端口上进行 HTTP(或 HTTPS)请求来连接至该应用程序。
- 应用程序无法向文件系统写入。应用程序只能读取通过应用程序代码上传的文件。该应用程序必须使用 App Engine 数据存储区、memcache 或其他服务存储所有在请求之间持续存在的数据。
- 应用程序代码仅在响应网络请求或 cron job 时运行,且任何情况下必须在 30 秒钟内返回响应数据。请求处理程序不能在响应发送后生成子进程或执行代码
该环境下你的应用程序可执行代码;可存储和查询 App Engine 数据存储区中的数据;可使用 App Engine 邮件、网址抓取和用户服务;可检查用户的网络请求以及准备响应。
沙盒
为了使得 App Engine 能够跨多个网络服务器分配对于应用程序的请求,并且防止应用程序彼此干扰,请在受限制的“沙盒”环境中运行应用程序。在这种环境中,该应用程序可执行代码;可存储和查询 App Engine 数据存储区中的数据;可使用 App Engine 邮件、网址抓取和用户服务;可检查用户的网络请求以及准备响应。
App Engine 应用程序无法:
- 向文件系统写入。应用程序必须使用 App Engine 数据存储区存储永久数据。允许从文件系统中读取,并且可使用与该应用程序一起上传的所有应用程序文件。
- 打开套接字或直接访问另一主机。应用程序可使用 App Engine 网址抓取服务分别向端口 80 和 443 上的其他主机发出 HTTP 和 HTTPS 请求。
- 产生子进程或线程。必须在几秒钟内于单个进程中处理对应用程序的网络请求。响应时间很长的进程会被终止,以避免使网络服务器负载过重。
- 进行其他类型的系统调用。
线程
Java 应用程序无法新建 java.lang.ThreadGroup
或 java.lang.Thread
。这些限制也适用于利用线程的 JRE 类。例如,应用程序无法新建 java.util.concurrent.ThreadPoolExecutor
或 java.util.Timer
。应用程序可以对当前线程执行操作,如Thread.currentThread().dumpStack()
。
文件系统
Java 应用程序无法使用任何用来写入文件系统的类,如 java.io.FileWriter
。应用程序可以使用诸如 java.io.FileReader
的类从文件系统中读取自己的文件。应用程序也可以通过例如 Class.getResource()
或 ServletContext.getResource()
来访问作为“资源”的自身文件。
只有视为“资源文件”的文件才可以由应用程序通过文件系统访问。默认情况下,WAR 中的所有文件都是“资源文件”。您可以使用appengine-web.xml 文件将文件从该组中排除出去。
java.lang.System
禁用不适用于 App Engine 的 java.lang.System
类的功能。
以下 System
方法在 App Engine 中不起作用:exit()
、gc()
、runFinalization()
、runFinalizersOnExit()
以下 System
方法返回 null
:inheritedChannel()
、console()
应用程序无法提供或直接调用任何本机 JNI 代码。以下 System
方法引发java.lang.SecurityException
:load()
、loadLibrary()
、setSecurityManager()
反射
允许应用程序对自己的类进行完全、无限制的反射访问。它可以查询任何私有成员,使用java.lang.reflect.AccessibleObject.setAccessible()
,以及读取/设置私有成员。
应用程序还可以对 JRE 和 API 类(如 java.lang.String
和 javax.servlet.http.HttpServletRequest
)进行反射。但是,它只可以访问这些类的公共成员,而不可以访问受保护成员或私有成员。
应用程序无法对不属于自己的任何其他类进行反射,也无法使用 setAccessible()
方法来避开这些限制。
自定义类载入
App Engine 完全支持自定义类载入。但是请注意,App Engine 将覆盖所有的 ClassLoader,以将相同的权限分配给所有由应用程序载入的类。如果执行自定义类载入,在载入不信任的第三方代码时要小心。
JRE 白名单
对 Java 标准库(Java 运行时环境或 JRE)中类的访问仅限于 App Engine JRE 白名单中的类。
日志
应用程序可以使用 java.util.logging.Logger 将信息写入应用程序日志。您可以使用管理控制台查看和分析您的应用程序的日志数据,或使用appcfg.sh request_logs 下载日志数据。管理控制台可以识别 Logger
类的日志级别,并且以交互方式显示不同级别的消息。
servlet 写入标准输出流 (System.out
) 和标准错误流 (System.err
) 中的所有内容都由 App Engine 捕捉,并记录在应用程序日志中。写入标准输出流的行将以“INFO”级别记录,写入标准错误流的行将以“WARNING”级别记录。任何记录到输出或错误流的日志记录框架(如 log4j)都适用。但为了细化对管理控制台日志级别显示的控制,日志记录框架必须使用 java.util.logging
适配器。
import java.util.logging.Logger;
// ...
public class MyServlet extends HttpServlet {
private static final Logger log = Logger.getLogger(MyServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
log.info("An informational message.");
log.warning("A warning message.");
log.severe("An error message.");
}
}
App Engine Java SDK 在 appengine-java-sdk/config/user/
目录中包含模板 logging.properties
文件。要使用它,请将该文件复制到 WEB-INF/classes
目录(或 WAR 中的其他位置),然后将系统属性 java.util.logging.config.file
复制到 "WEB-INF/classes/logging.properties"
(或与应用程序根相关的任何所选路径)。您可以在 appengine-web.xml
文件中设置系统属性,如下:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
...
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/classes/logging.properties" />
</system-properties>
</appengine-web-app>
Eclipse Google 插件新项目向导将为您创建这些日志记录配置伟建,并自动将它们复制到 WEB-INF/classes/
。对于java.util.logging
,必须设置系统属性才能使用此文件。
环境
所有系统属性和环境变量都是应用程序专有的。设置系统属性只会影响该属性的应用程序视图,不会影响到 JVM 的视图。
您可以在部署描述符中为应用程序设置系统属性和环境变量。
App Engine 在应用程序服务器上初始化 JVM 时设置以下系统属性:
file.separator
path.separator
line.separator
java.version
java.vendor
java.vendor.url
java.class.version
java.specification.version
java.specification.vendor
java.specification.name
java.vm.vendor
java.vm.name
java.vm.specification.version
java.vm.specification.vendor
java.vm.specification.name
user.dir
分享到:
相关推荐
### GAE for Java:深入解析与实践指南 #### 关于Google App Engine for Java Google App Engine for Java(简称GAE for Java)是Google为Java开发者提供的一个云计算平台,旨在简化高度可扩展应用的构建与部署...
通过学习和分析这个Demo,开发者可以了解如何在GAE上构建一个完整的Java Web应用,掌握Struts2、Spring和Tiles的整合使用,以及如何利用GAE的特性优化应用性能和可扩展性。这不仅有助于提升个人技能,也有助于团队在...
GAE上可以用的JAVA Blog源代码 可以在GAE上直接使用,支持图片上传等。 源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留 最新版本请去主页下载 http://redpower1998.appspot.com 主页包括...
**Google App Engine (GAE) 是一个云服务平台,允许开发者使用Java或Python语言构建和运行应用程序。本教程主要关注Java的使用。** 首先,创建一个App Engine应用程序非常快速且免费,您可以在几分钟内将应用上传并...
中文名: 基于Google App Engine(GAE)的Java和GWT应用开发 原名: Google App Engine Java and GWT Application Development 作者: Daniel Guermeur, Amy Unruh 资源格式: PDF 版本: 文字版 出版社: Packt ...
基于Google App Engine(GAE)的Java和GWT应用开发_Google App Engine Java and GWT Application Development Nov.2010
1. **安装和配置Quercus**:首先,你需要下载Quercus的Java库,并将其添加到你的GAE项目类路径中。这可以通过在你的项目`lib`目录下放置Quercus的JAR文件来完成。 2. **构建PHP处理程序**:创建一个Java类作为PHP...
【标题】"Spring+GAE"揭示了将Google App Engine(GAE)与Spring框架集成的主题,这是一个在云端运行Java应用程序的关键技术组合。Spring是一个广泛使用的开源Java框架,提供了依赖注入、面向切面编程和MVC(模型-...
3. **语言和框架**:GAE支持多种编程语言,如Python、Java、Go等。由于没有明确指出使用的语言,我们可以假设这是基于其中一种语言的博客应用。通常,Python博客应用可能会使用Django或Flask框架,而Java可能使用...
从Google 上扒下来的! java 的中文文档~~ 方便大家学习! 打开"code.google.com\intl\zh-CN\appengine\docs"文件夹下的 docs.html 文件! 这是起始页!
GAE支持Python、Java、Go等多种编程语言,本案例中很可能是使用Python,因为它是GAE的早期支持语言,并且处理RSS和Web服务非常方便。 接着,应用的核心部分是RSS解析。Python有多个库可以用来解析RSS,例如...
GAE支持多种编程语言,包括Python、Java、Go、Node.js等,提供了完整的基础设施,如数据库服务、存储系统、身份验证以及负载均衡。 在学习和使用GAE进行建站的过程中,以下几个关键知识点是必须掌握的: 1. **开发...
#### GAE简介与功能概述 GAE(Google App Engine)是由谷歌提供的一个强大的云服务平台,它允许开发者构建并托管各种类型的应用程序。从实用性角度来看,GAE为用户提供了一个稳定的免费网站空间,支持的主要编程...
Hibernate作为ORM工具,可以将Java对象与GAE的数据存储服务(如Datastore)进行对接,简化数据库操作。GAE则为这个应用提供了弹性云环境,自动处理负载和扩展需求。 在实际的集成过程中,可能涉及到以下步骤: 1. ...
Goolge app engine for java英文帮助文档 最新的哦!
Google App Engine(GAE)是谷歌提供的一项托管服务,它允许开发者使用特定的框架和语言(如Java)在Google的基础设施上运行Web应用程序。在这个"gae-java-first"项目中,我们将探讨如何使用Java在Google App Engine...
jiql是在JAVA GAE上访问Google Datastore的JDBC wrapper jiql支持标准的sql语言进行访问原版的官方主页 www.jiql.org 由于原版源代码存在一些问题,所以对改版本做了一些修正,并把修正后的源代码发布在此。版权...
它支持多种编程语言,包括Python、Java、Go等,而gtap项目很可能是用Python编写的,因为早期的GAE主要支持Python。 “gtap源文件”意味着这个压缩包包含了项目的源代码,用户可以下载并研究其工作原理,甚至可以...