`

App Engine 初步使用时所遇问题

阅读更多

  网上的免费jsp空间很少,app engine就提供了这样一个环境。

 

 

   抱着对免费空间的使用心态,自己做了一个blog网站,想传到google中来供自己使用。却不想因google的 种种限制一直不能很好的运行,之后不得不对自己的项目进行一次次的改动,现在是终于可以正常的运行 了。这个版本可以说是第四个版本了。

 

 

    在修正项目期间,所遇到的问题在网上找了N久,很少有正确解答的,都是copy来copy去,无奈之下,只 好自己慢慢摸索,几次之中都想直接放弃,从code google上直接down一个下来改改就行了。可我的心告 诉我,别放弃,再来一次,说不定这次就行了,做为一个程序员,没有什么代码问题是解决不了的。还好 我坚持了下来,能坚持下来的这种淡淡喜悦真是一种难得的舒适。

 

 

    想想自己的辛苦,还是把到当前为此所遇到的一些为难的问题记录出来,让想在app engine中做项目却和 我遇到一样问题的朋友做个警示牌,朋友别放弃,也许这次就成功了。

 

 

    废话不多说,来正题。以下所说的本地开发环境是指使用google所提供的sdk模拟环境

 

第一个版本

    因为想快速开发个blog出来就使用了jsp做为页面表现,并且使用jsp做为了controller,具体架 构就略去,但在这里,我的jsp中使用了 <%@include file="..." %> ,这在正常情况下是没有任何问题。并且 在本地google所提供的开发环境中运行也是正常。但在进行上传时就出问题了,总是提示jsp文件编译错 误。在网上查了一圈,全部都是说与google的sdk包有关系,在上传时必须要使用google的sdk包进行编译 ,但那个包中编译所使用的编码是默认编码,改成utf8的就行了。唉,查了一圈了,千篇一律全部都是这 个。我就把sdk包反编译,加入utf8编码,最后,无效... ,苦闷中。再次使用google,到国外去找一圈 ,终于找到了几个描述和我的相似的问题,一开网页,却发现是以group.google打头,被国内封杀,无果 ,最后对于那个在搜索结果中的只字片语进行模糊猜测,发现了有@ include字样,再次试验。ok,终于 可编译了。得出一个观点:在本文编写当前时间2011-3-17日之前,app engine是不支持jsp的 <%@include file="..." %> 写法的只支持<jsp:include page="..."/>,不知道那些把app engine用的呼呼的高手们有没有注意到这点啊。

 

  第二个版本

        因为一开以是以jsp为控制器和表现层的写法,当要删除@ include时改动也不小,将在jsp中所 写的action全部打散,分成单个jsp处理。但这次却出现新的问题。所分散开的jsp编译是没问题,但上传 之后却总是在处理时会出错,这下我可没办法了。这又不能远程debug,本地开发环境运行也正常。想去 解决却无从下手,如果在代码里打log慢慢查应该也是能查出来的,但我不想费这个时间了。也许google 对 jsp的支持还是没那么好吧。再说打散了以后的jsp已经不是我想写的那个架构了,放弃这个,使用 spring mvc来实现

 

第三个版本

   终于还是用了别人的框架。我使用spring2.5并使用annotation快速的将自己的项目重新架一遍。ok,本地开发环境运行正常。上传成功。运行。。。失败。一头的瀑布冲了下来。我的天,这又是什么 问题。再去goole网上查一遍。无数的关键字都是spring mvc入门,就是没有我要的答案。终于在我忘了 名子的地方发现了某人的一句评语,真的就一句。app engine不支持annotation。我的眼前一片漆黑。。

 

第四个版本

    无奈之中,再次改版。去除annotation,使用xml配置,上传,ok,终于可以运行了。嗯?等下 ,怎么登陆出问题了!后台登陆是使用iframe结构,最后登陆时只能开一个iframe,别的都不行,再次从 址栏中打入页面地址被转到了登陆页面,也就是说,登陆时session存值无效!晕,再次上网搜索。无人 关心该问题。不知道那些把app engine玩出花来的高手们是怎么做的。验证后台的登陆全部都使用google 的用户模块?最后还是在老外一个不知名的网上中看到了几个字眼if use session ... implements seril... 不会吧,难到是要序列化?怎么文档里也没有说明啊。。。 再次对session存值对象做序列化 ,再次enhance,再次上传,再次运行。。。唉。。。成功。。。嗯,嗯?成功?哈哈,终于是成功了!


    不管怎么样,blog是运行是成功了。

    其实在使用app engine时还是遇到了很多其它的问题,就是限制的问题。比如,google为了保证数据库的 查询效率,不支持模糊查询。对于实体类String类型最多只支持255汉字,如果想要更长的,就使用google所提供的text类型,但这种类型是不支持排序的。使用有主的级联关系时,子类的pk只能是key类型,等等。。。最后一直解决,虽然对这些限制很是不满,不过,我有吃亏吗?我学到了那些为google工作的这些高手们对于效率的追求和解决方案。他们对于对象型数据库的解决方案。他们对所能提供最多功能时的标准限制决策。这些,无一不是珍贵的智慧结晶

 

   最后想说,app engine 想说爱你不容易啊。。。


   虽然国内对google封杀的很厉害,但是想要用它还是有办法的,具体办法去网上查这里不说了。  

 

1
0
分享到:
评论
1 楼 hippostart 2011-03-19  
我用 gae/j 没有遇到楼主这么多问题,我的搭配是 maven + spring + spring web mvc + velocity,没有用 jsp, 也没用jdo, jpa,直接用底层api访问datastore。因为那个是基于bigtable的NoSQL数据库来的,模拟成jdo,jpa之后更麻烦

相关推荐

Global site tag (gtag.js) - Google Analytics