SAE java踩过的坑(持续更新)

使用SAE是因为最早接触,没想到这么多坑。

java编译器版本问题

java版本要求是java6,太高的版本会报错。这个可以在eclipse里面设置编译器版本。

war包问题

war包必须和应用同名。servlet-api.jar, mysql.jar这些公用的jar文件不要上传,以免版本冲突。

contextPath问题

因为这个问题影响cookie和session所以比较重要。

通过二级域名访问后获取的getContextPath(),永远是/version/appname的固定值,与请求的URL无关。

getRequestURI()获取的结果不包含appname,所以URI不包含contextPath这个一般的web容器不一样。

cookie问题

cookie路径必须/appname开头,这是为了安全考虑,所以以后访问的url也要带上下文路径。

session问题

分布式session需要加<distributable/>标签。 SAE session经常会丢失,我后来自己又用memcache保存了一次以减少丢失机率。

另外session是基于cookie实现的,如果有保存不了很可能也是路径问题。

mysql问题

mysql链接10s超时。我是自己DIY的线程池,所以使用前要检查连接是否超时就好了。使用其他线程池时一定要注意。

storage问题

storage问题,wrap的file系列接口,每次上传的文件都错误。可能时文件太大了,分多次写入流的缘故。先存储到临时文件,再用storage接口上传可以解决。

log问题

开始时我找不到系统log查看的地方。系统打印的日志在HTTP日志,notice和warning中。

memcache

memcache基于请求初始化

Font字体问题

Font的几个逻辑字体都找不到,后来没办法找了一个字体文件打包到war包里面了。

getServletContext问题

这个方法会报错,no such method,后来只能用ClassLoader来读取配置文件了。

代码更新问题

代码更新后需要手动重启jvm,要不然有时候静态变量没有更新。





你可能感兴趣的:(SAE java踩过的坑(持续更新))