论坛首页 Java企业应用论坛

Play!跑在GAE上,小试GAE

浏览 27495 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-17  
按我试验的,应该是要在什么配置文件里加东西的(比如什么config文件?但没找到什么文档,不知道怎么配),我做了如下尝试:
1. SqlMapConfig.xml 放在models里、controllers里
2. 读取这文件的类放在models里、controllers里,代码如下:
System.out.println(new java.io.File(".").getAbsolutePath());
        String resource = "SqlMapConfig.xml";  
        SqlMapClient sqlMap = null;  
        try {  
            Reader reader = Resources.getResourceAsReader(resource);  
            sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
3. 1和2的的组合,相应的写成:models/SqlMapConfig.xml, controllers/SqlMapConfig.xml
4. 根据上面打印的路径,是Play!的安装目录,也试过放在这里
5. 试过绝对路径:E:\\**\SqlMapConfig.xml
6. lib、config、public文件夹

均不成功!!

0 请登录后投票
   发表时间:2009-07-17  
绝对路径都不成功?这有点怪异~~

我帮你google到篇文章,你参考下:

http://groups.google.com/group/play-framework/browse_thread/thread/7401ad8f509ec380/41aaa8e6ed3773b5?lnk=gst&q=ibatis#41aaa8e6ed3773b5
0 请登录后投票
   发表时间:2009-07-18  
另外,放在Eclipse里是可以的(只不过这样就相当于没有用到play!了)

刚才找了一下,发现有一个play.Play.getFile(String)方法,但我用来找SqlMapConfig.xml
,一样不成功
0 请登录后投票
   发表时间:2009-07-19  
不好意思,有点误导了。
说绝对路径也找不到说得不太详细了,是这样的:
绝对路径是找到了SqlMapConfig.xml;但是在SqlMapConfig.xml里,会配置上其它的sqlMap文件,这些也用绝对路径?(估计这样可以吧,明天再试一下)
业余看这个的,没多少时间弄这个

谢谢你帮我找的链接:
按里面的说法,相当于把自己的代码打成一个独立的jar包了(文件夹);这倒是一个办法,改天再试一下...
0 请登录后投票
   发表时间:2009-07-20  
呵呵~成功的话吼一下。改天有时间我看看Play!源代码,看他对路径是怎么处理的~
0 请登录后投票
   发表时间:2009-07-25  
最新消息还是没有弄成功~
0 请登录后投票
   发表时间: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,你确定加这个注释行吗?谢谢
0 请登录后投票
   发表时间:2009-07-31  
确认是没有问题的。注意你引用的包是否正确。
0 请登录后投票
   发表时间:2009-07-31  
javax.persistence.Enumerated
不是这个注释吗?
我看GAE的说明里面也是说加这个注释。但是我这里在后台查数据,发现没有生成这一列,并且取出来的也是null
0 请登录后投票
   发表时间:2009-07-31  
java.lang.Object 写道
javax.persistence.Enumerated
不是这个注释吗?
我看GAE的说明里面也是说加这个注释。但是我这里在后台查数据,发现没有生成这一列,并且取出来的也是null

你是用Play!吗?

那个字段必须是Text类型
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics