使用Play!在Gae搭建blog的念头起源于很早之前在JavaEye上看到的一篇《Play!跑在GAE上,小试GAE》,帖子里面讨论了很多关于Gae和Play!的特点以及实际操作,此外网友laynepeng对Play!在Gae上的使用总结了不少心得,这里就不再赘述他们的观点,只提一下自己碰到的问题。
首先是选择JDO还是JPA的问题,由于自己平时一直使用Hibernate,所以一开始果断就选择了JPA,可是google的实现限制实在很多,用的很别扭。JDO的支持据说比JPA好一些,可是这会儿我也懒得再去折腾它了。后来在看Play!文档关于Gae支持的部分的时候发现了Siena这个东东,使用下来的感觉很爽,除了不支持事务之外做一个个人网站绰绰有余了,而且咱这小站点对数据也没那么高的要求,于是就和残缺不全的JPA说拜拜了。 不过爽完之后就来后遗症了,用Siena的时候域模型对象继承了它的Model类,是个充血模型,查询出来的对象都是经过代理的Proxy,不能进行序列化操作,放不到google的memcache里面。不得已,只好在域模型里查询完之后把结果对象一个个的再转成VO放到memcache里面去,这下总算圆满了。
网站发布上来跑了一星期,总是看到日志里面提示应用运行时CPU耗时过多,同时打印消息里面还有play初始化加载的信息。这样联想到第一次加载站点的时候速度巨慢的问题,猜测应该是gae在一段时间没有访问之后自动停止应用,等下次访问的时候再重新加载引起的。于是跑到Play!的group里猛翻一通,发现之前已经有人反映过这个问题了。不过大拿们说这个是Gae本身运行机制的问题,暂时也只能这样了,那就暂时先凑合着吧,看看后面的版本有没有解决的方法。
到目前为止基本上就这两个问题耗费的时间比较长了,贴出来希望后面的兄弟们少走点弯路吧。