Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个新的mixin-in-sling_Java_Jackrabbit_Jcr_Sling - Fatal编程技术网

Java 创建一个新的mixin-in-sling

Java 创建一个新的mixin-in-sling,java,jackrabbit,jcr,sling,Java,Jackrabbit,Jcr,Sling,我在使用下面的代码为ApacheSling中的jackrabbit创建一个新的自定义类型时遇到困难。这在Jackrabbit上直接起作用,但在Apache Sling上不起作用。我这样做正确吗?谢谢 下面的代码给出了一个“javax.jcr.InvalidItemStateException:Conflict”。我使用一个独立的吊索,是唯一的用户,所以绝对没有冲突 Repository repository = JcrUtils.getRepository("http://localhost:8

我在使用下面的代码为ApacheSling中的jackrabbit创建一个新的自定义类型时遇到困难。这在Jackrabbit上直接起作用,但在Apache Sling上不起作用。我这样做正确吗?谢谢

下面的代码给出了一个“javax.jcr.InvalidItemStateException:Conflict”。我使用一个独立的吊索,是唯一的用户,所以绝对没有冲突

Repository repository = JcrUtils.getRepository("http://localhost:8080/server");

Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));

NamespaceRegistry registry = session.getWorkspace().getNamespaceRegistry();
registry.registerNamespace("my", "http://my.com/v1.0");

CndImporter.registerNodeTypes(new FileReader("C:\\test.cnd"), session);
的JavaDocs提供了以下线索:

节点和属性的写入方法以及save引发的异常 如果尝试的更改与对的更改冲突,则刷新 通过另一个会话创建的持久工作区。也被 方法的节点和属性,如果该对象表示 已从工作区中删除


您是否确定没有任何旧会话仍在运行,可能是守护进程未正确关闭?

如果您使用的是Sling,您可以通过将CND文件放在OSGi包(java代码应该驻留的地方)中来避免这一切,该包的头告诉Sling在哪里可以找到它

当您的包被激活时,您的节点类型将自动注册。有关这个示例,请参见在该模块中设置的Sling NodeType捆绑包头中声明的文件(或者如果您不使用Maven,则以任何其他方式)

另外请注意,您不应该在Sling中需要JcrUtils.getRepository。无论如何,获取存储库的正确方法是通过SlingRepository OSGi服务,它以一致的方式为您的所有Sling组件管理存储库登录和配置。您可以通过对java代码中SlingRepository的@Reference来获取存储库,或者从Sling提供给servlet和脚本等请求处理程序的资源中获取JCR会话。这两种机制都使用