解决Google App Engine中的DatastoreNeedIndexException异常

分类:Tech | 作者:Shoopman | 发表于2009/04/18 没有评论  

    做了一个简单的一对一(OneToOne)关系的JPA测试,在本地Eclipse中没有问题,但部署到GAE后,添加数据成功而在显示数据的时候却报500错误。幸好GAE控制台有详细错误日志:

/oneone.jsp
java.lang.ClassCastException: com.google.appengine.api.datastore.DatastoreNeedIndexException cannot be cast to javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:754)
at org.apache.jsp.oneone_jsp._jspService(oneone_jsp.java:100)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

看来是忘记给datastore指定,参看GAE的文档Queries And Indexes,赶紧在WEB-INF添加datastore-indexes.xml,再把本地自动生成的index(在WEB-INF/appengine-generated/datastore-indexes-auto.xml中)的内容复制进去,如下:


 xmlns=”http://appengine.google.com/ns/datastore-indexes/1.0
 autoGenerate=”true”>
       source=”auto” />

重新部署到GAE中,运行正常。

测试地址:http://shoopmanga.appspot.com/oneone.jsp

Tag:

日志信息 »

该日志于2009-04-18 13:16由 Shoopman 发表在Tech分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。
目前盖楼 (0)层:

发表评论 »

« »