欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

GAE/J 开发问题总结一

程序员文章站 2022-06-07 23:06:08
...
最近在GAE上做一些小开发,算是一些尝试,还遇到了不少问题,每一个问题,找解决答案,花了我不少心思.
一方面GAE/J上支持的框架,以及jre的支持类都有限制,所以我们平时开发的用到的技术,并不是都能用上.就是说对我们平时开发用的到技术或者框架,GAE/J有可能不支持,也可能是半支持状态.让人很是郁闷.
第二方面,GAE/J开发,目前还比较少,特别是在大陆,今年上半年老是被GFW墙,时好时坏,也挡住了.所以这方面的资料就比较少.如果只是这样就算了,更可气的是GAE/J在Google groups上的group讨论群也被墙了.看不到官方的英文文章或者国外同行讨论的问题.做技术这一行的都知道,很多技术难点突破方面,在国外的网站上比较好.

所以把开发中遇到的问题的情况拿出来晒晒:

1.JSTL,如果想在GAE/J上使用JSTL的话,默认是用不了的,就算你把jstl.jar,standard.jar都加到classpath里,c.tld也都加进到jsp里,所有的操作都准备好了.可是在GAE/J,你会看到页面输出的是jstl的一些标签.会让你非常失望.
解决方案是:
在jsp的页头加一个属性标志

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>

就是这个isElIgored="false"

2.如果你是第一次在eclipse里跑一个GAE的web项目的,而且有加一些spring的包的时候,你会发现有一些java.exe的错误

解决方案是:
默认你的GAE/J项目里导入的是eclipse的jre包,此时你需要把jre换成jdk,才可以正常的run

3.数据存储,GAE/J数据存储时,是用key-object的方式,而且平时开发用于关系型的db操作方式没有办法进行.要用jdo的方式来操作.当用eclipse开发,然后在eclipse运行时,数据存储是存在WEB-INF/下的一个叫appengine-generated的目录 下.如果要清空数据只要把这个目录 删除 就可以了.

4.关于Spring,就到目前为止,在我的GAE/J的项目里,用到了spring3.0的MVC和JDO是没有问题,也用到了spring3.0的annotaion来进行注解和自动注入.


ava.io.IOException: Error posting to URL:
> 409 Conflict
> Another transaction by user is already in progress for this app and major
version. That user can undo the transaction with appcfg.py's "rollback"
command.
C:\Documents and Settings\John\My Documents\newproject>"C:\Program
Files\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.2.5.v200909021031\appengine-java-sdk-1.2.5\bin\appcfg"
rollback war


应用程序可以使用 java.util.logging.Logger 将信息写入应用程序日志。您可以使用管理控制台查看和分析您的应用程序的日志数据,或使用 appcfg.sh request_logs 下载日志数据。管理控制台可以识别 Logger 类的日志级别,并且以交互方式显示不同级别的消息。

servlet 写入标准输出流 (System.out) 和标准错误流 (System.err) 中的所有内容都由 App Engine 捕捉,并记录在应用程序日志中。写入标准输出流的行将以“INFO”级别记录,写入标准错误流的行将以“WARNING”级别记录。任何记录到输出或错误流的日志记录框架(如 log4j)都适用。但为了细化对管理控制台日志级别显示的控制,日志记录框架必须使用 java.util.logging 适配器。

目前GAE/J已经可以支持SLF4J+LOG4J是可以用的,我已经实践过!