Как просматривать репозиторий jackrabbit с помощью spring-mvc

Как просмотреть репозиторий jackrabbit с помощью веб-приложения spring-mvc?

Как сопоставить входящие запросы URL-адресов в веб-контроллерах spring с узлами в репозитории? Я хотел бы, чтобы пользователи могли открывать текстовый документ в OpenOffice или Word, открыв URL-адрес, подобный следующему, и сохранить его обратно через webdav.

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

Заранее спасибо за любые идеи.

Эймонн


person eon    schedule 05.08.2011    source источник
comment
Я мог бы изучить sling вместо spring-mvc в качестве веб-уровня   -  person eon    schedule 06.08.2011
comment
Я упростил вопрос до «просто» spring-mvc и jackrabbit   -  person eon    schedule 20.08.2011


Ответы (1)


Репозиторий Jackrabbit и связанный с ним стандарт JSR для репозиториев содержимого Java сами по себе предоставляют довольно низкоуровневый API сохранения, который вы, вероятно, могли бы использовать для создания репозиториев для объектов домена, сопоставляя данные со структурами репозитория, такими как узлы/свойства JCR. Вы будете использовать API JCR, расположенный в пакете javax.jcr.*, для управления репозиторием (и для максимальной переносимости). В предложении вы можете использовать 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 без особых усилий и инкапсулировать повторяющиеся задачи, такие как подключение и обработка исключений, с помощью шаблона Template Method.

Что касается сопоставления запросов, вы можете запустить JCR на отдельном сервере, как и в случае с реляционной базой данных, и подключиться к ней через RMI. Вот пример: http://dev.day.com/content/docs/en/crx/current/developing/accessing_jcr_connectors.html Я бы посчитал это «чистым» способом использования JCR в приложениях Spring MVC.

Что касается части сохранения WebDAV... Я знаю, что Jackrabbit действительно поддерживает монтирование репозиториев в виде дисков WebDAV, но у меня нет с этим никакого опыта, и я, честно говоря, не могу представить, как сказать Word загрузить файл при редактировании где-то... Но я вообще не специалист по Word, извините....

Теперь... Apache Sling Framework, с другой стороны, предлагает интересный подход к созданию приложений RESTful, которые хорошо интегрируются с моделью репозитория и некоторыми абстракциями структуры репозитория более высокого уровня. Однако способ разрешения сервлетов в Sling полностью отличается от обычного Spring MVC (см. http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file), поэтому было бы немного работать над согласованием обоих подходов.

Надеюсь, там есть какая-то информация, которую вы можете использовать.

С уважением, Йоханнес

person Johannes    schedule 24.08.2011