虽然不停的见到云计算的相关新闻,而且在CSDN的论坛里也解答过关于Google App Engine持久化方面的问题,但并没有将这两者联系起来。我一直以为GAE是一个类似于Spring或者Hibernate一样的开源项目罢了。最近构思技术族谱这个开源项目的时候,想先找一个免费的jsp空间做做前期测试,竟然发现GAE就是Google的云计算平台,其提供的免费流量和计算能力还是相当可观的,这对我来说,无疑是天上掉下一块大馅饼。
使用Google提供的Eclipse插件,开发还是很便利的,跟写普通的JAVA web程序也没有太大的差异,不过随插件提供的本地模拟环境还是和部署后的真实环境有些差异,从开始做,到真正把一个最简单的功能(Echo)成功上线,大概花费了三天的业余时间,并遇到了几个小问题,在这里总结一下,希望对大家有用。
我的GAE版本:1.2.2
第一点,算是个注意事项吧。
GAE的插件在每次打包时,会自动清理WEB-INF/classes目录,所以struts.xml,log4j.properties等配置文件无法直接放在该目录里,可以放在src目录,或者可以再建一个独立的目录,比如cfg存放配置文件,并将该目录加为class目录即可。
第二点,JSTL标签默认无法使用(不报错,也不被解析)。
需要在jsp页面的page direction中增加isELIgnored="false",比如:
<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8" isELIgnored="false"%>
官方说这可能跟他们使用的Jasper版本有关,也许在下一次升级的时候会改进。参见:http://groups.google.com/group/google-appengine-java/msg/da389df15e056697?hl=en
第三点,中文问题。
在windows上开发,默认文件编码是GBK,这时候如果JSP页面也将encoding设置为GBK的话,通常需要增加Filter来实现编码转换来消除乱码。我把整个项目全部改成UTF-8,也就是文件编码UTF-8,而且jsp中指定的charset也是UTF-8,中文问题可以自然解决(不用增加额外的filter)。
第四点,整合了Struts2,但默认情况下,由于ONGL权限导致部署后的应用访问失败。
这个问题在本地测试不会出现,但部署上去就会抛出如下异常:
错误信息:
08-31 08:37AM 19.209 /xxxxxxx.action?fromUrlEncode=%E7%BC%96%E7%A0%81&fromUrlNonEncode=%E6%9C%AA%E7%BC%96%E7%A0%81 404 86ms 158cpu_ms 0kb Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729),gzip(gfe)
See details
117.79.68.140 - - [31/Aug/2009:08:37:19 -0700] "POST /xxxxxxxx.action?fromUrlEncode=%E7%BC%96%E7%A0%81&fromUrlNonEncode=%E6%9C%AA%E7%BC%96%E7%A0%81 HTTP/1.1" 404 0 "http://jszupu.appspot.com/xxxxxxx.jsp" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729),gzip(gfe)" "jszupu.appspot.com"
官方说是因为实际运行环境的安全设置和插件带的模拟环境不太一样,并给出了一个解决方案,需要增加一个Listener,listener内容如下:
官方关于这个问题的讨论请参见:http://groups.google.com/group/google-appengine-java/browse_thread/thread/19018b0317f27817
第五点,如果使用了标签文件,则本地可测试通过,但部署时出错。
标签文件是指在WEB-INF/tags目录下编写的JSTL自定义标签,不是指的用TLD文件定义的标准JSP自定义标签。
如果用到了这种标签文件,那么在部署的时候会出错:
2009-9-5 19:35:04 org.apache.jasper.compiler.Compiler generateClass
严重: Javac exception
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
关于这个问题,google官方也只给出了一个很差的解决方案,就是把jre/lib下的tools.jar拷贝到AppEngine的安装目录/lib/share,相关问题描述和讨论过程参见:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/225d7a555cbc0100/1a9cd7c6f39e663a?lnk=raot
http://groups.google.com/group/google-appengine-java/browse_thread/thread/175e70cc0c93ded9
第六点,标签文件中的中文乱码。
JSP页面用UTF-8,中文没有任何问题,但标签文件用UTF-8就不行,这个我没有找到解决方案,网上讨论的资料也很少,不知道是不是跟我机器环境有关,最后干脆在标签文件中不写中文,全用Resource Bundle来做。
第七点,jstl标签的应用方式问题。
在jsp中,jstl标签可以用如下URL引入:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
而在标签文件中,只能用
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
才有效,参见:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/affd7e7a83f614e1
欢迎大家交流使用心得。
分享到:
相关推荐
组装排量0.16CC超微型发动机,果真是麻雀虽小五脏俱全
在IT行业中,前端框架的发展日新月异,Vue.js作为其中的一员,因其轻量级、易上手且功能强大的特点,深受开发者喜爱。本示例项目"基于Vue的TodoList"是一个经典的学习案例,它虽然小巧,但却包含了Vue.js开发中的...
C#运控框架 雷赛运动控制 DMC系列 运动控制项目 C#源码 1.别看它界面丑,里面的应有应该尽有; 2.麻雀虽小五脏俱全,很适合新手的一个学习项目,绝对推荐
描述中提到“麻雀虽小五脏俱全”,意味着这个软件虽然体积小,但包含了各种必要的图像处理功能。它提供了从基本的裁剪、调整大小,到更复杂的色彩校正、滤镜应用等一应俱全的工具。用户可以“很简单的制作出很专业的...
麻雀虽小!五脏俱全!全站生成静态网页!不错的html编辑器,编辑时具有文章标题的推荐,头条,滚动功能!生成静态网页后,即使卸载了数据库!对网站访问,没有丝毫影响!集合了后台SEO参数高级设置、前台全静态生成...
闲暇之余写了个管理系统包括仓库管理,宿舍管理,人事管理,麻雀虽小五脏俱全,各项功能都有,有用的希望能帮助你们!欢迎评论一起进步!系统配置文件用的ini,目录下的DrDepot.ini,所以你们在打开时注意配置里面的...
这个liteduino真的是太精简了,连个复位按钮都没有,要复位就请手动把RESET接到地再松开,但是麻雀虽小五脏俱全,功能还是有保障的,适合嵌入式,自己玩玩也可以,稳定性不比pro mini(说UNO也行,都是一个芯片,...
麻雀虽小,五脏俱全加强版聊天室,源码来自网上搜得的,增加用户登录密码检查,聊天信息记录功能,版权归原作者所有,我只是修改下玩。在终端下执行,没有图形界面,没有创建子进程,利用int型数组保存客户accept套...
主要包括: 增、删、改、查,分页显示数据信息, 管理员登录,验证码,JS刷新验证码,session的应用以及销毁,管理员账号和密码修改, JS控制数据信息(全选、反选、取消选择),选择性删除留言,回复留言等...
这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(CRM): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。CRM系统有助于企业更好地理解客户需求,提高...
springMVC+mongodb-java-driver+mongodb+mave+jfreechart-Demo麻雀虽小五脏俱全了,手麻系统是用此框架搭建的,一个简单的demo左边调价号的下拉列表于下面的表格名称,价格是联动的(下拉列表的数据发现改变表格里的...
青云是一套麻雀虽小但五脏俱全的在线考试系统。采用了目前主流的技术栈SpringBoot+Vue+ElementUI,并进行了前后端
这款被描述为"麻雀虽小,五脏俱全"的绘图工具,显然尽管其体积小巧,但功能却十分齐全,满足了用户在多种场景下的需求。 首先,让我们深入探讨一下它所支持的一些核心功能。插入便签功能允许用户在绘图过程中添加...
现在Javascript框架、控件库有很多,jQuery、Ext、prototype、MooTools、Dojo等等,这些都是在Google上搜索“javascript+framework”列在第一页的。其中,除了MooTools,其它的都有所了解,但只在项目中用过Ext和...
就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也...
一、大致设想 1.坦克类,子弹类,每个类维护一张地图 * 关于坦克:地图中只保存当前坦克不能过的地方(墙、河流) * 关于子弹:地图中只保存子弹能撞到的东西(不在草地里的坦克,子弹,墙) * 游戏对象:地图中只...
正文 swoole有两个部分。... ... ...而swoole框架用composer引入之后安装即可,或者下载源码后手动include/require。...另外,swoole框架依赖swoole扩展,是swoole扩展的应用实例。...swoole扩展是基础,基于swoole扩展,可以做出...
它易拓展而不失灵活,可以轻松对应大中小型项目。MicroPHP没有大而全的功能,只给你最需要的底层功能,但是给你无限的灵活拓展能力。其它框架都有的基本特性这里就不一一罗列。... 5.application是一个简单的项目结构 ...