私は、最新の Spring3 と JBoss Modeshape (ファイルシステム コネクタを使用して統合リポジトリを指す) を使用して、資産を取得する「リソース」コントローラーに取り組んでいます。
コントローラーを使用してWebページにアクセスすると、ほとんどの画像が返され、他のさまざまな画像の「getNode」呼び出しでNullPointerExceptionがスローされます...
私の側では、特別なことは何もしていません (私のテストケースは正常に動作します):
- エンジンの作成/構成 (1 回のみ)
- ログインしてセッションを受ける
- ノードを見つけようとする
- セッションからログアウトする
コードは次のようになります。
session = createSession();
Node node = session.getNode(path);
ページへの最初のヒット (エラーあり) の後、その後のすべてのヒットは完璧に機能し、それ以降はすべて正常に読み込まれます。
私はこのリンクをたどっていますHeavy Concurrency: A better way to manage JCR Sessions for the session creation/manage.
Modeshape で JcrNodeDefinition を構成しようとしているスレッドが複数あるように見えます。enureRequirePrimaryTypesLoaded()
メソッドをマークするsynchronized
と、エラーは発生しません。
Modeshape、同時実行性、およびセッション管理を使用した経験/提案はありますか?
スタック トレースは次のとおりです。
org.modeshape.jcr.JcrNodeDefinition.ensureRequiredPrimaryTypesLoaded(JcrNodeDefinition.java:114) で java.lang.NullPointerException org.modeshape.jcr.JcrNodeDefinition.allowsChildWithType(JcrNodeDefinition.java:275) で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. handleResource(ResourceController.java:46)