`
啸笑天
  • 浏览: 3465684 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

初用Google App Engine for Java (org.apache.jasper.JasperExceptio; org.datanucleun)

阅读更多

 

参考学习指南:http://code.google.com/intl/zh-CN/appengine/

使用jdo时遇到一个,如下代码:

private void listEmployees(HttpServletRequest req) {

PersistenceManager pm = PMF.get().getPersistenceManager();

String query = "select from " + Employee.class.getName() + " order by id ";

try {

List<Employee> list = (List<Employee>) pm.newQuery(query).execute();

list.size();

req.setAttribute("employees", list);

} finally {

pm.close();

}

}

 

添了红色的一句解决问题了。

本来没写红色的那句跳转到页面是就报

 

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 40

37:   System.out.println("exc");

38: }

39:     }

40: if (employees == null || employees.size() == 0) {

41: %>

42: <tr>

43: <td colspan="5" style='text-align: right'>无数据</td>

Caused by: org.datanucleus.exceptions.NucleusUserException:Object Manager has been closed错误。哦,原来是pm.close();,我的确关了,关了的确是不好使用关之前的值,但我也把值读出来放在了req.setAttribute("employees", list);中了啊。先不管我了,我把pm.close();关了果然解决了问题。于是想到了pm.newQuery(query).execute();可能有点问题,这让我联想到了Hibernate的load和get方法的区别,他的值也许不是直接取出来的,是放在缓存里的,在pm.close();之前没使用就失效了,关了之后使用就报错了。所以我在关之前使用下了list.size();使用list.size()没有别的意思,仅仅是使用下为了从缓存中取出来,这样就可以在关了之后继续使用。这样问题解决了。

刚用的还没认真看,也许有别的方法直接取出来,还没看先写下了笔记。我现在有两种解决方法,一种是等会执行pm.close();但这样开支太大,所以用第二种使用下list,即把他从缓存中取出。

附件:

1做了个crud的小应用(访问地址:http://gzhuyangjun.appspot.com/

2学习资料

 

分享到:
评论

相关推荐

    apache-tomcat-7.0.85.rar

    Apache Tomcat是一个开源的Java Servlet容器,主要用于执行Java Web应用程序,包括JSP(JavaServer Pages)和Servlet。这个"apache-tomcat-7.0.85.rar"压缩包文件包含的是Apache Tomcat的7.0.85版本,这是一个在2016...

    tomcat 7 及其源码

    Apache Tomcat 7 是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用程序部分,特别是Servlet和JSP规范。这个版本7.0.42是Tomcat 7的一个稳定版本,提供了对Java Servlet 3.0和JavaServer Pages (JSP)...

    apache-tomcat-8.5.47-windows-x64.zip

    Apache Tomcat是一个开源的Web服务器和Java应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术。这个"apache-tomcat-8.5.47-windows-x64.zip"压缩包是针对Windows 64位系统的Tomcat 8.5.47版本。在...

    apache tomcat6.0 源代码

    Apache Tomcat 6.0是Apache软件基金会的开源项目,是一个流行的Java Servlet容器,用于运行Java Web应用程序。源代码分析可以帮助我们深入理解Tomcat的工作原理,优化性能,以及进行自定义扩展。下面是关于Apache ...

    Tomcat8.0.53

    **描述:**Apache Tomcat 8.0.53 是一个开源的、基于Java的Web应用程序服务器,由Apache软件基金会开发并维护。它主要用于运行Servlet和JSP(Java Server Pages)应用程序,提供了一个轻量级的、高性能的平台来托管...

    &lt;&lt;How tomcat works&gt;&gt; 英文版 中文版 源码

    《How Tomcat Works》是一本深入解析Apache Tomcat工作原理的经典书籍,对于Java Web开发者来说,它是理解Tomcat内部机制的重要资源。这本书分为英文版和中文版,方便不同语言背景的读者阅读。同时,源码的提供使得...

    Tomcat服务器

    【Tomcat服务器】是Apache软件基金会的Jakarta项目下的一个开源免费Web应用服务器,它主要负责处理基于Java Servlet和JavaServer Pages(JSP)的应用。Tomcat作为一个轻量级的服务器,广泛应用于小型到中型企业级...

    HowTomcatWorks

    Tomcat,作为Apache软件基金会的开源项目,是Java Servlet和JavaServer Pages(JSP)技术的免费Web应用服务器,它在Java Web开发领域扮演着至关重要的角色。"HowTomcatWorks"和"HowTomcatWorksApps"这两个主题将引领...

    tomcat7压缩包

    Apache Tomcat 7是一款广泛应用的开源Java Servlet容器,它实现了Java EE Web应用程序规范的Servlet和JSP标准。这个“tomcat7压缩包”包含了运行和管理Java Web应用程序所需的所有组件和配置文件。以下是对该压缩包...

    tomcat6 源代码

    Apache Tomcat 6是一款广泛应用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。这个源代码压缩包提供了Tomcat6的完整源码,对于开发者来说,深入理解其内部工作原理、优化性能或者定制功能都具有极...

Global site tag (gtag.js) - Google Analytics