Multithreading 确保RequiredPrimaryTypesLoaded在Jetty下的第一次访问时抛出NullPointerException

Multithreading 确保RequiredPrimaryTypesLoaded在Jetty下的第一次访问时抛出NullPointerException,multithreading,concurrency,jcr,modeshape,Multithreading,Concurrency,Jcr,Modeshape,我正在使用最新的Spring3和JBoss Modeshape开发一个资源控制器,它指向一个使用文件系统连接器检索资产的联邦存储库 当我使用控制器访问任何网页时,它会返回大多数图像,然后在getNode调用中对其他各种图像抛出NullPointerException 就我而言,我没有做任何特殊的事情,因为我的测试用例工作得很好: 仅创建/配置引擎一次 登录并获取会话 尝试查找节点 从会话注销 代码大致如下所示: 在第一次点击错误页面后,之后的每一次点击都很完美,从那时起一切都很好 我将通过此链接

我正在使用最新的Spring3和JBoss Modeshape开发一个资源控制器,它指向一个使用文件系统连接器检索资产的联邦存储库

当我使用控制器访问任何网页时,它会返回大多数图像,然后在getNode调用中对其他各种图像抛出NullPointerException

就我而言,我没有做任何特殊的事情,因为我的测试用例工作得很好:

仅创建/配置引擎一次 登录并获取会话 尝试查找节点 从会话注销 代码大致如下所示:

在第一次点击错误页面后,之后的每一次点击都很完美,从那时起一切都很好

我将通过此链接创建/管理会话

似乎有多个线程试图在Modeshape中配置JcrNodeDefinition。如果我将EnureRequireMaryTypesLoaded方法标记为synchronized,那么我永远不会得到错误

有人对使用Modeshape、并发和会话管理有任何经验/建议吗

堆栈跟踪是:

java.lang.NullPointerException 在org.modeshape.jcr.JcrNodeDefinition.ensureRequiredPrimaryTypesLoadedJcrNodeDefinition.java:114 位于org.modeshape.jcr.jcrnodefinition.allowschildwithtypejcrnodefinition.java:275 位于org.modeshape.jcr.RepositoryNodeTypeManager.findChildNodeDefinitionRepositoryNodeTypeManager.java:1142 位于org.modeshape.jcr.JcrNodeTypeManager.findChildNodeDefinitionJcrNodeTypeManager.java:433 位于org.modeshape.jcr.SessionCache$JcrNodeOperations.MaterialiseSessionCache.java:2711 位于org.modeshape.graph.session.GraphSession$Node.loadGraphSession.java:1755 位于org.modeshape.graph.session.GraphSession$Node.getPayloadGraphSession.java:3030 位于org.modeshape.jcr.AbstractJcrNode.getNodeAbstractJcrNode.java:950 位于org.modeshape.jcr.AbstractJcrNode.getNodeAbstractJcrNode.java:96 位于com.acme.beans.contents.filenodedapter.filenodedapter.java:26 位于com.acme.web.views.ResourceController.getStreamResourceController.java:77 位于com.acme.web.views.ResourceController.handleResourceResourceController.java:46


我建议将其发布在上,在本例中,记录一个问题,以便开发团队能够对其进行评估。这些是直接与ModeShape用户沟通并询问ModeShape特定问题的最佳方式

session = createSession();
Node node = session.getNode(path);