`
pure
  • 浏览: 350896 次
社区版块
存档分类
最新评论

Play!跑在GAE上,小试GAE

阅读更多
昨天晚上就想发这个帖子,可惜javaeye老上不去,BS胡作非为的人。

很长一段时间就想试试GAE,用其它java框架麻烦了,感觉不够轻,在不久前发现了


http://www.playframework.org/

这个框架,相当于java on rails。以前的新闻已提到过。请参考:
http://www.iteye.com/news/8322
http://www.iteye.com/news/4196-play-another-java-web-application-framework
http://www.iteye.com/news/4395-play-1-0-stable4-version-of-the-release-and-to-provide-a-complete-program-of-the-forum-demo

这个是shinewang的blog,有很多play!的中文翻译,写的相当不错。
http://shinewang.iteye.com/blog/310439


我现在的GAE应用演示URL:http://javaweb2009.appspot.com/ 此演示是Play!自带的测试例子。

接下来的任务就是用Play!写一个单用户blog,这样就可以方便的利用Google的免费资源了,那是相当的酷。

另外Play!作者告诉我Play! 1.0正式版将在今年夏天完成,已就是这一二个月内的事,后面1.1将支持Scala。再就是完成Play!的文档工作。虽说当前Play!版本是1.0但是功能已经非常完善。

下面是作者的原话:

引用
I hope to release a 1.0 version during this summer.
At the same time we will launch a 1.1 branch including Scala support.

There is still a lot of work especially to complete the documentation.



Play!版本发布历史:

1.0-stable6, 1.0-stable5, 1.0-stable4, 1.0-stable3, 1.0-stable2, 1.0-stable1
分享到:
评论
74 楼 sotfd 2009-12-17  
帮我解决解决
有遇到过这样 的问题吗?
Error occurred during initialization of VM
agent library failed to init: instrument
Error opening zip file or JAR manifest missing : E:/Program
73 楼 Laynepeng 2009-11-25  
gqf2008 写道
play!框架做的电子商务类网站(www.815buy.net),开发只用了2个晚上,开发效率绝对可以的


你可以到
http://groups.google.com/group/play-framework
去Share your Play applications~
72 楼 gqf2008 2009-11-25  
play!框架做的电子商务类网站(www.815buy.net),开发只用了2个晚上,开发效率绝对可以的
71 楼 avaj 2009-10-31  
感觉第一次访问速度非常慢啊?不知道为什么。打开一次之后就快一些了,过段时间不上,又慢了
70 楼 Laynepeng 2009-10-03  
qqoo 写道
呵呵LZ厲害。。我也準備部署一個程序。。最網站後臺調用。。當貌似發現上傳的時候出現錯誤=w=
Creating staging directory
Scanning for jsp files.
Compiling jsp files.
Compiling java files.
java.lang.IllegalStateException: Found a jar file too large to upload:

呵呵。。 不知道怎麼縮小JAR文件的大小呃。


你这个jar是什么东西?jar包只是简单的zip而已,保证互相读取的路径正确的话,可以拆分掉jar~
69 楼 qqoo 2009-10-01  
呵呵LZ厲害。。我也準備部署一個程序。。最網站後臺調用。。當貌似發現上傳的時候出現錯誤=w=
Creating staging directory
Scanning for jsp files.
Compiling jsp files.
Compiling java files.
java.lang.IllegalStateException: Found a jar file too large to upload:

呵呵。。 不知道怎麼縮小JAR文件的大小呃。
68 楼 Laynepeng 2009-07-31  
george_space 写道
Laynepeng 写道
这帖子被翻出来了。。。

看了下java.lang.Object的帖子,可是那边被锁住了。。。回到这边吧:

你写的public static <T> T getObjectById(Class<T> cls, Object key) 不是规范用法,要知道大部份JPA的field都是lazy load的。大概可以样记忆,如果你要取的数据是大数据,基本都是lazy的。如one to many关系,many to many关系,还有big resultset.

如果你要使用eager的话,请设定FetchType。但我不保证这个在GAE管用,没实践过。。。

但是你写的用法可以经常在Hibernate的JPA里面看到,那是因为Hibernate对于detached的对象作了特殊处理。。。

这就是Java最令人烦躁的地方!

就GAE而言,如何才能解决500字限制的问题呢?
我有自己的服务器,不缺空间,但是很想试验GAE,Python什么都很顺利,但是Java,从GAE推出Java支持依赖,就一直无法解决500字限制的问题,从日本网站上得到一些资料,还是不行,英文资料则根本没有解决的。
我很想知道各位是如何解决的,仅就GAE而言。


看这个帖(http://www.iteye.com/topic/436730#1111521)的方法。。。
67 楼 george_space 2009-07-31  
Laynepeng 写道
这帖子被翻出来了。。。

看了下java.lang.Object的帖子,可是那边被锁住了。。。回到这边吧:

你写的public static <T> T getObjectById(Class<T> cls, Object key) 不是规范用法,要知道大部份JPA的field都是lazy load的。大概可以样记忆,如果你要取的数据是大数据,基本都是lazy的。如one to many关系,many to many关系,还有big resultset.

如果你要使用eager的话,请设定FetchType。但我不保证这个在GAE管用,没实践过。。。

但是你写的用法可以经常在Hibernate的JPA里面看到,那是因为Hibernate对于detached的对象作了特殊处理。。。

这就是Java最令人烦躁的地方!

可否分享一个解决方案,最好是非Play!的。
66 楼 george_space 2009-07-31  
Laynepeng 写道
这帖子被翻出来了。。。

看了下java.lang.Object的帖子,可是那边被锁住了。。。回到这边吧:

你写的public static <T> T getObjectById(Class<T> cls, Object key) 不是规范用法,要知道大部份JPA的field都是lazy load的。大概可以样记忆,如果你要取的数据是大数据,基本都是lazy的。如one to many关系,many to many关系,还有big resultset.

如果你要使用eager的话,请设定FetchType。但我不保证这个在GAE管用,没实践过。。。

但是你写的用法可以经常在Hibernate的JPA里面看到,那是因为Hibernate对于detached的对象作了特殊处理。。。

这就是Java最令人烦躁的地方!

就GAE而言,如何才能解决500字限制的问题呢?
我有自己的服务器,不缺空间,但是很想试验GAE,Python什么都很顺利,但是Java,从GAE推出Java支持依赖,就一直无法解决500字限制的问题,从日本网站上得到一些资料,还是不行,英文资料则根本没有解决的。
我很想知道各位是如何解决的,仅就GAE而言。
65 楼 Laynepeng 2009-07-31  
这帖子被翻出来了。。。

看了下java.lang.Object的帖子,可是那边被锁住了。。。回到这边吧:

你写的public static <T> T getObjectById(Class<T> cls, Object key) 不是规范用法,要知道大部份JPA的field都是lazy load的。大概可以样记忆,如果你要取的数据是大数据,基本都是lazy的。如one to many关系,many to many关系,还有big resultset.

如果你要使用eager的话,请设定FetchType。但我不保证这个在GAE管用,没实践过。。。

但是你写的用法可以经常在Hibernate的JPA里面看到,那是因为Hibernate对于detached的对象作了特殊处理。。。

这就是Java最令人烦躁的地方!
64 楼 java.lang.Object 2009-07-31  
问题已经解决,谢谢大家

http://www.iteye.com/topic/436730#1111521
63 楼 pure 2009-07-31  
java.lang.Object 写道
我想知道,你们用Text的时候,用的是JDO还是JPA
JDO下面这个问题,确实可以解决,,但是JPA的一直都没办法解决

我们都是用的JPA
62 楼 java.lang.Object 2009-07-31  
我想知道,你们用Text的时候,用的是JDO还是JPA
JDO下面这个问题,确实可以解决,,但是JPA的一直都没办法解决
61 楼 pure 2009-07-31  
george.SPACE 写道
google官方给的例子和视频教程里面,都回避了使用Text类型,而使用String类型,我不知道他们是有意为之,还是有什么顾虑,楼主解决了华而不实的Text使用难题,可谓高人,能否分享一下代码?

http://layneblog.appspot.com/  这个是layne的,这些问题都是他解决的。
http://play2800.appspot.com/  这个是我的,你可以进入后台试试看。 http://play2800.appspot.com/admin

这两个都使用了Text,都没有字数限制了,我的代码在家里电脑上,你可以先找layne看看。
代码也没有特别之处。你保存的时候需要把字符串转成Text

Text content = new Text(contentStr)

读的时候 content.getValue()
60 楼 george.SPACE 2009-07-31  
google官方给的例子和视频教程里面,都回避了使用Text类型,而使用String类型,我不知道他们是有意为之,还是有什么顾虑,楼主解决了华而不实的Text使用难题,可谓高人,能否分享一下代码?
59 楼 george.SPACE 2009-07-31  
pure 写道
java.lang.Object 写道
javax.persistence.Enumerated
不是这个注释吗?
我看GAE的说明里面也是说加这个注释。但是我这里在后台查数据,发现没有生成这一列,并且取出来的也是null

你是用Play!吗?

那个字段必须是Text类型

可否把你的代码分享一下,我们也好参考一下。
大家都无法解决gae500字限制的问题,楼主分享代码的话,肯定是对大家的一种很大的贡献。
58 楼 pure 2009-07-31  
java.lang.Object 写道
javax.persistence.Enumerated
不是这个注释吗?
我看GAE的说明里面也是说加这个注释。但是我这里在后台查数据,发现没有生成这一列,并且取出来的也是null

你是用Play!吗?

那个字段必须是Text类型
57 楼 java.lang.Object 2009-07-31  
javax.persistence.Enumerated
不是这个注释吗?
我看GAE的说明里面也是说加这个注释。但是我这里在后台查数据,发现没有生成这一列,并且取出来的也是null
56 楼 pure 2009-07-31  
确认是没有问题的。注意你引用的包是否正确。
55 楼 java.lang.Object 2009-07-31  
Laynepeng 写道
pure 写道
在show方法我改成这样了:

public static void show(Long id) {
        Post post = Post.findById(id);
        notFoundIfNull(post);
        List<Post> sourcPosts = Post.findAll();

        List<Comment> comments = Comment.findBy("postId", post.id);
        post.comments = comments;

        List<Post> posts = new ArrayList<Post>();
        posts.addAll(sourcPosts);
        posts.remove(post);
        Collections.reverse(posts);
        render(post, posts);
    }

newComment方法改成这样:

public static void newComment(Long id, String author, String comment) {
        Post post = Post.findById(id);
        notFoundIfNull(post);
        Comment co = new Comment(author, comment, id);
        co.save();
        show(id);
    }

Post.java

@Transient
    public List<Comment> comments;

但是
public String content;
这个要大文本,GAE要用
public Text content;

但是play!处理不了这个。

Text的getValue()还没试好。

Post post = Post.findById(id);
这样出来的post,post的content为null,还待研究,看来以后真要不修改随处运行是个神话。


呵呵~恕我直说吧,你这个解决方法,其实不如使用传统的DTO模式,很明显GAE的存储层没法“到处调用”,那就应该把它隔离出来,原来J2EE的分层就是这个原因~

另外500字符问题已经解决(有点累,找了不少资料),Text不是Play!不能识别,原因如我前面所说~~
可以把GAE的appengine-api-1.0-sdk-1.2.1.jar拷过来,里面有com.google.appengine.api.datastore.Text这个类,在Post里面把content的类型设为他就好。。。

你会发现GAE这个字段没被存起来,这时候要坚定信念,因为前面已经分析过原因。去找GAE的问题,Google不到,只有JDO的,那就去Google Group去找,里面全是GAE的高手,包括开发者,搜一下就会发现有人遇到你的问题了。。。

在这个字段前面加上@Enumerated就可以解决。。。

后面的事情如同我前面说的,大不了复制为VO的时候转一下就好(这时候,你的解决方法就不行了,分层还是有好处的:)):
postVo.setContent(postItem.content.getValue());
这样就解决了,记得把View里面所有的调用改为调用postVo的,否则可能出现转型问题,检查清楚~~~

一切成功~

结论:方法和思路才是最重要的~~


您好,我想知道一下,JPA下面我试了加@Enumerated注释,发现取出来的还是null,你确定加这个注释行吗?谢谢

相关推荐

    GAE上可以用的JAVA 博客源代码

    可以在GAE上直接使用,支持图片上传等。 源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留 最新版本请去主页下载 http://redpower1998.appspot.com 主页包括原始的普通版本

    GAE使用规则

    GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则

    基于GAE的Demo

    Eclipse开发 Gae,Struts2,Spring,云计算,学习gae云计算的好例子

    gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_

    图自编码器GAE的pytorch实现,参考论文vgae

    架设在GAE上的GTalk翻译机器人

    架设在GAE上的GTalk翻译机器人 **目前已经存在的功能: 1. (0.1版开始支持) 可以直接识别中文和英文,并自动进行互译 1. (0.1版开始支持) 可以翻译一段文章,而不单单只是一个单词** **以后可能会有的功能: 1. (0.2...

    jiql 允许你的应用在GAE上使用SQL语句

    jiql - (允许你的应用在GAE上使用SQL语句) jiql是在JAVA GAE上访问Google Datastore的JDBC wrapper jiql支持标准的sql语言进行访问原版的官方主页 www.jiql.org 由于原版源代码存在一些问题,所以对改版本做了...

    GAE入门教程

    pass之GAE入门教程, 学习GAE

    gae_in_pytorch-master_GAE_

    图形自动编码器GAE的pytorch实现,可参考论文VGAE

    GAE之webapp框架

    GAE平台开发应用时,简单的webapp框架的使用

    GAE编程指南

    《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。《GAE编程指南》是介绍使用这个强大平台的专家级...

    GAE和SAE的比较

    云计算下的PaaS中的GAE和SAE平台

    spring+gae

    实现了gae与spring3之间的集成

    gae编程指南

    《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。《GAE编程指南》是介绍使用这个强大平台的专家级...

    可以放到GAE上的blog -- micolog

    可以放到GAE上的blog -- micolog0.7rc1

    百度的bae跟谷歌的gae对比

    百度的bae跟谷歌的gae对比,百度的资源限制很少,但是资源很少,教程很少。。

    quercus成就GAE上运行php项目

    Google app engine提供了虚拟服务器,但是目前只能支持python和java语言。php语言只有通过认证才可以使用,但是很难通过认证。本人做了一个通过quercus使php项目能运行到GAE上,这是简单的项目内容

    GAE包(以配置好,解压可用)

    GAE 集成程序,共有三个软件包,解压后安装包里的python然后运行SDU里的exe文件,最后运行客户端加服务端中localproxy中的proxy.py就可以了

    gae-mini-profiler-2.0.2.zip

    gae-java-mini-profiler.zip,google a p p engine java runtime的mini profiler(灵感来自于https://github.com/kamens/gae_mini_profiler上的python gae_mini_profiler和...

    GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法

    GAE(Google App Engine)空间 GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法使用教程及 GAE域 GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法捆绑方法

    关于GAE的教程、工具与文档(建站)

    关于GAE的教程、工具与文档(建站) 全

Global site tag (gtag.js) - Google Analytics