0

我正在使用最新的 Spring3 和 JBoss Modeshape(指向使用文件系统连接器的联合存储库)开发“资源”控制器来检索资产。

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

就我而言,我没有做任何特别的事情(我的测试用例工作正常):

  1. 创建/配置引擎(仅一次)
  2. 登录并获取会话
  3. 尝试找到节点
  4. 从会话中注销

代码看起来很像:

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

在第一次点击页面(有错误)之后,之后的每一次点击都很完美,从那时起一切正常。

我正在关注这个链接Heavy Concurrency: A better way to manage JCR Sessions for the session creation/management。

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

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

堆栈跟踪是:

java.lang.NullPointerException at org.modeshape.jcr.JcrNodeDefinition.ensureRequiredPrimaryTypesLoaded(JcrNodeDefinition.java:114) at org.modeshape.jcr.JcrNodeDefinition.allowsChildWithType(JcrNodeDefinition.java:275) at org.modeshape.jcr.RepositoryNodeTypeManager.findChildNodeDefinition( RepositoryNodeTypeManager.java:1142) 在 org.modeshape.jcr.JcrNodeTypeManager.findChildNodeDefinition(JcrNodeTypeManager.java:433) 在 org.modeshape.jcr.SessionCache$JcrNodeOperations.materialize(SessionCache.java:2711) 在 org.modeshape.graph.session .GraphSession$Node.load(GraphSession.java:1755) at org.modeshape.graph.session.GraphSession$Node.getPayload(GraphSession.java:3030) at org.modeshape.jcr.AbstractJcrNode.getNode(AbstractJcrNode.java:950 ) 在 org.modeshape.jcr.AbstractJcrNode.getNode(AbstractJcrNode.java:96)在 com.acme.beans.contents.FileNodeAdapter.(FileNodeAdapter.java:26) 在 com.acme.web.views.ResourceController.getStream(ResourceController.java:77) 在 com.acme.web.views.ResourceController。处理资源(ResourceController.java:46)

4

1 回答 1

0

我建议将其发布在ModeShape 讨论论坛上,在这种情况下,记录一个问题,以便开发团队对其进行评估。这些是直接与 ModeShape 用户交流并询问 ModeShape 特定问题或疑问的最佳方式。

于 2012-01-17T23:32:23.950 回答