快速业务通道

Java Content Repository API简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
JCR 实现的移植性已经做了许多工作。它促进移植性的方式之一就是使用标准的 XML 导入和导出特性。通过使用这些工具,符合规范的供应商仓库内容可以很容易地转移到另一个符合规范的供应商仓库。使用 XML 进行序列化的另一个优势是:可以用传统的 XML 解析工具操纵导出的仓库。只要用清单 11 的三行代码就可以执行导出:

清单 11. 导出数据

File outputFile = new File("systemview.xml"); FileOutputStream out = new FileOutputStream(outputFile); session.exportSystemView("/wiki:encyclopedia", out, false, false);

然后可以把生成的 XML 文件转移给另一个新仓库,如清单 12 所示:

清单 12. 转移数据

File inputFile = new File("systemview.xml"); FileInputStream in = new FileInputStream(inputFile); session.importXML    ("/", in, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW); session.save();

添加二进制内容

直到现在,一直都是用 StringValue 表示属性和节点。但是 JCR 还支持其他类型,包括布尔型和长整型。清单 13 演示了 JCR 中可使用的流类型,可在节点中保存二进制图片。在这个清单中,可将文件 rose.gif 作为元数据添加到 nt:file 节点中。文件数据本身被保存为 nt:resource 子节点。

清单 13. 添加二进制内容

File file = new File("rose.gif"); MimeTable mt = MimeTable.getDefaultTable(); String mimeType = mt.getContentTypeFor(file.getName()); if (mimeType == null) mimeType = "application/octet-stream"; Node fileNode = roseMode.addNode(file.getName(), "nt:file"); Node resNode = fileNode.addNode("jcr:content", "nt:resource"); resNode.setProperty("jcr:mimeType", mimeType); resNode.setProperty("jcr:encoding", ""); resNode.setProperty("jcr:data", new FileInputStream(file)); Calendar lastModified = Calendar.getInstance(); lastModified.setTimeInMillis(file.lastModified()); resNode.setProperty("jcr:lastModified", lastModified);

在使用 MimeTable 类确定了内容类型之后,用 FileInputStream 装入文件。这个问题很简单,只要给 nt:resource 节点类型添加命名正确的属性即可,属性包含实际的文件数据。

Java Content Repository API简介(10)

时间:2011-06-25 IBM Titus Barik

版本管理

JSR-170 支持许多可选特性,包括访问控制、事务、锁定和版本管理。这些特性本身都可以是个完整的主题,所以我必须简要地总结一下,只介绍它们当中最流行的那一个:版本管理。在最简单的情况下,只需将 mix:versionable 混合类型添加到任何节点,就可以执行版本管理。在节点上,可以用一组类似 CVS 操作的方法实现版本管理,如清单 14 所示:

清单 14. 版本管理方法

n.checkout(); n.setProperty("wiki:content", "Updated content for the entry."); n.save(); n.checkin();

JCR 中的其他操作包括:更新、合并和恢复以前版本。要浏览指定节点的整个版本历史,可以通过清单 15 中的步骤进行:

清单 15. 浏览版本历史

VersionHistory vh = n.getVersionHistory(); VersionIterator vi = vh.getAllVersions(); vi.skip(1); while (vi.hasNext()) {    Version v = vi.nextVersion();    NodeIterator ni = v.getNodes();    while (ni.hasNext()) {    Node nv = ni.nextNode();    Sys

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号