java - 谷歌应用引擎 - org.datanucleus.exceptions.NucleusUserException : Object Manager has been closed

标签 java spring google-app-engine jpa datanucleus

为什么下面的代码会导致 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);
    }
}          

异常(exception):

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)

编辑:我提高了 datanucleus 的日志级别,这就是我所看到的。

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 添加到方法中可防止对象管理器关闭。但是,我不确定为什么没有这个它就关闭了。

关于java - 谷歌应用引擎 - org.datanucleus.exceptions.NucleusUserException : Object Manager has been closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294867/

相关文章:

java - Apache 弗林克 : Return type of function could not be determined automatically due to type erasure

java - 下载的文件已损坏,由 Java 中的客户端共享

java - Spring - : "Initializing Java Tooling". org/eclipse/jdt/core/search/SearchPattern 期间发生内部错误

java - vaadin (14.4.4) 应用程序 : Failed to determine project directory for dev mode . .. 在部署之前生成 "flow-build-info.json"

java - 使用 Eclipse GAE 运行 PhantomJS

python - GAE NDB 访问结构化重复列表中的子实例(字段)

java - 将 JUNG 移植到 GWT

java - 源文件夹和(普通)文件夹有什么区别

java - 我们如何指定用于身份验证的方法?

java - App Engine 中多个实例可用的 boolean 标志