2

如何使用 spring-mvc webapp 浏览 jackrabbit 存储库?

如何将 Spring Web 控制器中的传入 URL 请求映射到存储库中的节点?我希望用户能够通过打开如下所示的 URL 在 OpenOffice 或 Word 中打开 word 文档并通过 webdav 保存回它。

http://localhost:8080/my-app/my-doc.doc

提前感谢您的任何想法。

埃蒙

4

1 回答 1

1

Jackrabbit Repository 和 Java Content Repositories 的相关 JSR 标准单独提供了一个相当低级别的持久性 API,您可以使用它来为域对象构建存储库,将数据映射到存储库结构,例如 JCR 节点/属性。您将使用位于 javax.jcr.* 包中的 JCR API 来操作存储库(并实现最大的可移植性)。一句话,你可以用 Jackrabbit 来替换你的数据库。

一个快速的 google 搜索显示,确实有一些项目旨在为您可能了解和喜爱的 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 框架提供了一种有趣的方法来构建 RESTful 应用程序,它与存储库模型和存储库结构的一些更高级别的抽象很好地集成。然而,在 Sling 中解析 Servlet 的方式与普通的 Spring MVC 完全不同(参见http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file),所以协调这两种方法需要一些工作。

希望里面有一些你可以使用的信息。

干杯,约翰内斯

于 2011-08-24T01:15:43.023 回答