我正在尝试使用某些自定义节点类型的定义加载CND文件。该文件看起来像这样
<ca = 'http://www.stuff.com/training'>
[ca:article]
- ca:headline (string)
mandatory
- ca:body (string)
mandatory
这是加载节点类型的类
public class JcrRegisterNodeTypes {
public static void RegisterCustomNodeTypes(Session session, String cndFileName){
NodeType[] nodeTypes;
try {
File file = new File(cndFileName);
FileReader fr = new FileReader(file);
nodeTypes = CndImporter.registerNodeTypes(fr, session);
for (NodeType nt : nodeTypes) {
System.out.println("Registered: " + nt.getName());
}
} catch (InvalidNodeTypeDefinitionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NodeTypeExistsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedRepositoryOperationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
然后出现“ parse exception”,并显示此消息
10:37:23,052 ERROR [stderr] (default task-48) org.apache.jackrabbit.commons.cnd.ParseException: javax.jcr.UnsupportedRepositoryOperationException: TODO: JCR-3206 (cnd input stream, line 2)
似乎该方法未针对RMI实现。是否有其他方法可以生成/ node types / custom_node_types.xml?
我已经在WildFly 14上部署jackrabbit-webapp-2.18.4.war,并且我可以上传/下载文件,所以我认为安装运行正常。
项目中包含的jar是最新的稳定版本
jackrabbit-api-2.18.4.jarjackrabbit-core-2.18.4.jarjackrabbit-jcr-commons-2.18.4.jarjackrabbit-jcr-rmi-2.18.4.jarjcr-2.0.jar
因此,我遵循Julian的建议,并尝试直接在服务器上修改NodeType。