如何使用spring-mvc webapp浏览jackrabbit存储库?
如何将spring Web控制器中的传入URL请求映射到存储库中的节点?我希望用户能够通过打开如下所示的URL在OpenOffice或Word中打开word文档,并通过webdav保存回来。
http://localhost:8080/my-app/my-doc.doc
提前感谢任何想法。
埃蒙
答案 0 :(得分:2)
Jackrabbit Repository和Java Content Repositories的相关JSR标准本身提供了一个相当低级别的持久性API,您可以使用它来构建域对象的存储库,将数据映射到存储库结构(如JCR节点/属性)。您将使用位于javax.jcr。*包中的JCR API来操作存储库(并获得最大的可移植性)。在一个句子中,您可以使用Jackrabbit替换您的数据库。
快速谷歌搜索显示,确实有一些项目旨在为您可能知道并喜欢JDBC和Hibernate的人提供类似的便利包装,仅适用于JCR。我找到了例如Spring Modules项目:http://java.net/projects/springmodules/,不幸的是最近两年前更新了,所以它仍然在JCR 1.0上。有关样本用法,请查看http://java.net/projects/springmodules/sources/svn/content/trunk/samples/jcr/src/org/springmodules/examples/jcr/JcrService.java?rev=2110 尽管如此,你可以毫不费力地编写自己的JCR2Template,并使用模板方法模式封装重复的任务,如连接和异常处理。
对于请求映射,您可以在单独的服务器上运行JCR,就像使用关系数据库一样,并通过RMI连接到它。这是一个例子:http://dev.day.com/content/docs/en/crx/current/developing/accessing_jcr_connectors.html 我认为这是在Spring MVC应用程序中使用JCR的“干净”方式。
至于WebDAV保存部分......我知道Jackrabbit确实支持将存储库安装为WebDAV驱动器,但我真的没有任何使用它的经验而且老实说我无法想象一种告诉Word的方法在某处编辑时上传文件......但我根本不是Word专家,抱歉......
现在......另一方面,Apache Sling Framework提供了一种构建RESTful应用程序的有趣方法,它可以很好地与存储库模型和存储库结构的一些更高级别的抽象集成。然而,在Sling中解析Servlet的方式与普通的Spring MVC完全不同(参见http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file),因此协调这两种方法会有一些工作。
希望你可以使用一些信息。
干杯, 约翰内斯