GAE开发注意事项总结-阿里云开发者社区

开发者社区> 余二五> 正文

GAE开发注意事项总结

简介:
+关注继续查看
GAE(Google App Engine)是目前最受欢迎的云计算平台之一。特别是其对JAVA的支持,更是让许多人为之振奋。GAE的文档还算是比较丰富,不过仍然有一些让人迷惑的地方,本文将这些地方一一作出总结和说明,希望对GAE开发者有所帮助。
GAE支持JAVAPython(以后或许支持更多的)。这里仅讨论JAVA

JSP方面:
GAE支持JSP页面,但是默认并不启用JSTLEL表达式,很多开发者嵌入EL后发现出现奇怪的结果。若要启用JSTL,则需要做下面几个工作:
1,每个JSP顶部,加入以下语句
<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8"isELIgnored="false"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

2,将web.xml文件头部修改为以下形式,这一步也很重要, 网上现在有很多文章只说明了第一步,事实上还需要这一步。
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd"> 
这两步完成以后即可使用JSTL了。

Web方面:
1,默认情况下GAE并不启用Session。若要使用之,则需修改/Web-INF/appengine-web.xml文件,在根元素下加入这样的语句
  <application> 
    <sessions-enabled>true</sessions-enabled> 
  </application> 

另外一个需要注意的就是,尽量不要在Session中储存数据量较大的数据,这样做很可能会导致数据不同步的情况(这种现象很难调试)。一般来说仅仅在Session中放入一个标志(Key)即可,主体的数据应持久化或者放入memcache。不过有时memcache会因为某种原因比如服务器负载太高而失效,所以若这种现象是不可忍受的,则还是进行持久化比较保险。
2,每次请求时间必须控制在30sec以内,若超过这个时间GAE会自动终止该次请求。最消耗CPU时间的是数据库操作。

 


数据持久化方面:
GAE使用JDO或者JPA来进行数据持久化。和传统的关系型数据库相比,这种储存方法似乎更适合于互联网应用。一般来说,JDO的使用非常简单,不过这里仍然存在大量的陷阱,同样也是难以调试发现的。
1,每个欲持久化的类均必须有一个主键。主键不能是基本类型,只能装箱使用。最常见的就是Long(不要写成long)。

2,类之间尽量不要耦合 ,如Employee类中含有一个对Profile类的引用,这样也会导致持久化失败。虽然GAE文档中有说明可以通过某种方式来支持,不过我试验的结果表明还是难以使用。因而如果要耦合,则应使用一个普通的字段储存被耦合类的主键即可。查询的时候根据这个主键再作一次查询。为了提高性能,可以将查询出来的数据放入memcache中,这样可以减少查询次数。

3,由于查询操作比较消耗CPU,所以应尽量减少查询次数。为此可以使用DTOData Transfer Object)模式 ,将多个领域对象组装为一个DTO对象进行持久化;查询的时候一次性查出所需的数据,然后再分解DTO
4GAE不支持对 Map类型的集合类进行持久化 

5,在本地进行GAE项目调试的时候,默认的数据库位置是/WEB-INF/appengine-generated/local_db.bin。特别需要注意的是每次重新启动服务器并不会自动删除数据库中已有的内容。可以手动删除之以达到数据清空的目的。









本文转自 kevx 51CTO博客,原文链接:http://blog.51cto.com/spinlock/487213,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python、Java SDK两种方式调用阿里云人脸检测与五官定位
阿里云视觉智能开放平台基于达摩院自研的人脸人体分析技术,提供人脸检测与五官定位、人脸属性识别、人脸比对、人脸搜索、人体检测、人体属性、行为分析等多种功能,为开发者和企业用户提供高性能高可用的人脸人体识别服务。广泛应用于数字门店、楼宇门禁、身份识别、互动娱乐、IPC摄像头、内容广告等领域。此篇文章简单介绍人脸人体与五官定位python,java两种方式调用。
3 0
框架开发之Java注解的妙用(下)
框架开发之Java注解的妙用(下)
3 0
单例模式和多例模式的总结
单例模式和多例模式的总结
3 0
OAuth2 和 JWT - 如何设计安全的 API?
要比较JWT和OAuth2?首先要明白一点就是,这两个根本没有可比性,是两个完全不同的东西。
3 0
如何画出优秀的软件架构图?
当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况: 对着画布无从下手、删了又来?
3 0
框架开发之Java注解的妙用(上)
框架开发之Java注解的妙用(上)
3 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载