当前位置: 首页 > 面试题库 >

Google App Engine-org.datanucleus.exceptions.NucleusUserException:对象管理器已关闭

仉梓
2023-03-14
问题内容

为什么下面的代码导致org.datanucleus.exceptions.NucleusUserException:对象管理器已关闭?似乎在query.getResultList()处引发了异常。

public final void removeUserTokens(final String username) {
    final Query query = entityManager.createQuery(
        "SELECT p FROM PersistentLogin p WHERE username = :username");
    query.setParameter("username", username);

    for (Object token : query.getResultList()) {
        entityManager.remove(token);
    }
}

例外:

org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed
 at org.datanucleus.ObjectManagerImpl.assertIsOpen(ObjectManagerImpl.java:3876)
 at org.datanucleus.ObjectManagerImpl.getFetchPlan(ObjectManagerImpl.java:376)
 at org.datanucleus.store.query.Query.getFetchPlan(Query.java:497)
 at org.datanucleus.store.appengine.query.DatastoreQuery$6.apply(DatastoreQuery.java:611)
 at org.datanucleus.store.appengine.query.DatastoreQuery$6.apply(DatastoreQuery.java:610)
 at org.datanucleus.store.appengine.query.LazyResult.resolveNext(LazyResult.java:94)
 at org.datanucleus.store.appengine.query.LazyResult$LazyAbstractListIterator.computeNext(LazyResult.java:215)
 at org.datanucleus.store.appengine.query.AbstractIterator.tryToComputeNext(AbstractIterator.java:132)
 at org.datanucleus.store.appengine.query.AbstractIterator.hasNext(AbstractIterator.java:127)
 at org.datanucleus.store.appengine.query.LazyResult$AbstractListIterator.hasNext(LazyResult.java:169)
 at com.mystuff.service.auth.PersistentTokenRepositoryImpl.removeUserTokens(PersistentTokenRepositoryImpl.java:90)

编辑 :我增加了数据核的日志级别,这就是我所看到的。

FINE: Object Manager "org.datanucleus.ObjectManagerImpl@5d8d3d6c" opened for datastore "org.datanucleus.store.appengine.DatastoreManager@2447e380"
Feb 25, 2010 7:21:38 AM org.datanucleus.ObjectManagerImpl initialiseLevel1Cache
FINE: Level 1 Cache of type "weak" initialised
Feb 25, 2010 7:21:38 AM org.datanucleus.JDOClassLoaderResolver classForName
FINE: Class "java.lang.PersistentLogin" was not found in the CLASSPATH [Class resolver called from org.datanucleus.util.Imports.resolveClassDeclaration (line=177)]
Feb 25, 2010 7:21:38 AM org.datanucleus.ObjectManagerImpl disconnectSMCache
FINE: Level 1 Cache cleared
Feb 25, 2010 7:21:38 AM org.datanucleus.ObjectManagerImpl postClose
FINE: Object Manager "org.datanucleus.ObjectManagerImpl@5d8d3d6c" closed
Feb 25, 2010 7:21:38 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /j_spring_security_logout
Object Manager has been closed
org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed
 at org.datanucleus.ObjectManagerImpl.assertIsOpen(ObjectManagerImpl.java:3876)
 at org.datanucleus.ObjectManagerImpl.getFetchPlan(ObjectManagerImpl.java:376)

问题答案:

添加@Transactional到该方法可以防止对象管理器关闭。但是,我不确定为什么没有它就关闭。



 类似资料:
  • OpenStack对象存储是一个分布式的对象存储平台,支持API调用。该功能可以直接结合进其他应用中,也可以用来存储各种文件,包括虚拟机镜像、备份、归档、甚至是媒体文件。在OpenStack控制台,用户暂时只能管理容器和镜像。 在OpenStack对象存储中,容器是存放对象文件的空间,就像Windows或者Linux的文件夹是存放文件的空间一样。只是容器和容器不能像文件夹一样嵌套。OpenStac

  • 这是一个更通用的Spring问题,不一定是Spring社交脸谱网的问题;然而,我在这里问这个问题,因为我不清楚Spring是如何管理传递到控制器构造函数的脸谱网引用的。 我在Spring boot应用程序1.5.3版中运行这个。释放 我在谷歌上搜索过,读过很多关于作用域代理如何工作以及控制器是否为单例等的内容;但是对于这个特定的用例,我仍然不清楚。我担心的是,两个或两个以上的同时请求是否会导致一个

  • 问题内容: 我正在使用带有Java的Google AppEngine。当我使用某些数据存储功能时,出现一条错误消息: 我不知道这意味着什么,如何解决它,或者在哪里可以找到有关此错误的文档。谁能帮我?我使用的代码是: 我相信“ ”是指“拥有的,一对多”的关系。 问题答案: 一个持久对象只能由一个PersistenceManager“管理”。在DataNucleus中,这由“ ObjectManage

  • 内核对象管理接口 结构体 struct   rt_object   内核对象基类控制块 更多...   struct   rt_object_information   内核对象信息 更多...   宏定义 #define  RT_OBJECT_FLAG_MODULE   0x80   动态模块对象标志   类型定义 typedef struct rt_object *  rt_object_t

  • 当我尝试使用Android SDK管理器下载适用于Android 4.1的ARM EABI时,它拒绝安装。我收到以下消息:“SSL对等点错误关闭”。这是在Windows XP操作系统上。你知道这里发生了什么,我能做些什么来解决这个问题吗?

  • 更新的文件: 回溯:`文件“c:\python27\lib\site-packages\django-1.9-py2.7.eg\django\core\handlers\base.py”在get_response 149中。响应=self.process_exception_by_middleware(e,request) get_response 147中的文件“C:\python27\lib\