App Engine 使用多个网络服务器运行您的应用程序,并自动调整它所使用的服务器数量以便可靠地处理请求。指定的请求可能会传送到任何服务器,而且可能不是处理先前来自同一用户的请求的服务器。 App Engine 不支持向客户端发送数据,在应用程序中执行更多计算,然后发送更多数据。换句话说,App Engine 不支持响应单个请求“流式处理”数据。 请求处理程序对请求生成和返回响应的时间是有限的,通常约为 30 秒。达到限制时间后,请求处理程序将中断。 沙盒为了使得 App Engine 能够跨多个网络服务器分配对于应用程序的请求,并且防止应用程序彼此干扰,请在受限制的“沙盒”环境中运行应用程序。在这种环境中,该应用程序可执行代 码;可存储和查询 App Engine 数据存储区中的数据;可使用 App Engine 邮件、网址抓取和用户服务;可检查用户的网络请求以及准备响应。 App Engine 应用程序无法:
线程Java 应用程序无法新建java.lang.ThreadGroup 或 java.lang.Thread 。这些限制也适用于利用线程的 JRE 类。例如,应用程序无法新建 java.util.concurrent.ThreadPoolExecutor 或 java.util.Timer 。应用程序可以对当前线程执行操作,如 Thread.currentThread().dumpStack() 。文件系统Java 应用程序无法使用任何用来写入文件系统的类,如 只有视为“资源文件”的文件才可以由应用程序通过文件系统访问。默认情况下,WAR 中的所有文件都是“资源文件”。您可以使用 appengine-web.xml 文件将文件从该组中排除出去。 反射允许应用程序对自己的类进行完全、无限制的反射访问。它可以查询任何私有成员,使用 应用程序还可以对 JRE 和 API 类(如 应用程序无法对不属于自己的任何其他类进行反射,也无法使用 自定义类载入App Engine 完全支持自定义类载入。但是请注意,App Engine 将覆盖所有的 ClassLoader,以将相同的权限分配给所有由应用程序载入的类。如果执行自定义类载入,在载入不信任的第三方代码时要小心。 日志应用程序可以使用 java.util.logging.Logger 将信息写入应用程序日志。您可以使用管理控制台查看和分析您的应用程序的日志数据,或使用 appcfg.sh request_logs 下载日志数据。管理控制台可以识别 servlet 写入标准输出流 ( App Engine Java SDK 在 |
|