Загрузка больших файлов в репозиторий JackRabbit с помощью API

Мы настроили репозиторий JackRabbit для хранения файлов и других операций с файлами. Здесь мы пытаемся загрузить большие файлы в JackRabbit Repository с помощью CreateDocumentFromFilePath API. Он выдает ниже сообщение об ошибке "com.rovicorp.jackrabbit.exception.JackrabbitException: JE_00002/nShort Message:::Exception from Jackrabbit Repository".

Мы попытались загрузить файл меньше 30MB, и он работает нормально. Но если мы идем дальше, это выдает сообщение об ошибке.

Мы продолжили отладку этой проблемы и видим следующее сообщение об ошибке:

"Caused by: org.apache.jackrabbit.rmi.client.RemoteRepositoryException:
java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.lang.ClassNotFoundException:
org.apache.jackrabbit.core.data.DataStoreException (no security manager: RMI
class loader disabled)"

Читаем в инете и нужно настроить Repository.xml файл на максимальный размер загружаемого файла. Мы не можем понять, как это настроить в файле Repository.xml. Прикрепил сообщение об ошибке снимка экрана.

введите здесь описание изображения

Мы хотим загрузить большие файлы в «репозиторий JackRabbit», используя CreateDocumentFromFilePath API.

Можете ли вы помочь нам решить эту проблему?

Заранее спасибо


person Rajesh Chandrasekar    schedule 27.12.2018    source источник
comment
какой контейнер сервлета вы используете?   -  person BSeitkazin    schedule 27.12.2018
comment
Возможный дубликат Java: нет диспетчера безопасности: загрузчик классов RMI отключен   -  person BSeitkazin    schedule 27.12.2018
comment
Пожалуйста, публикуйте трассировку стека исключений в виде текста, а не скриншотов.   -  person Mark Rotteveel    schedule 27.12.2018
comment
Мы используем Tomee, и мы развернули его как военный файл в Tomee.   -  person Rajesh Chandrasekar    schedule 27.12.2018


Ответы (1)


Давайте проверим документацию Jackrabbit о хранилище данных базы данных и увидим:

При добавлении бинарного объекта Jackrabbit проверяет его размер. Когда он больше minRecordLength (по умолчанию 100 байт), он добавляется в хранилище данных, в противном случае он хранится в памяти. Это делается очень рано (возможно при вызове Property.setValue(stream)). В диспетчере постоянства хранится только уникальный идентификатор данных (за исключением объектов в памяти, где хранятся данные). При обновлении значения старое значение сохраняется (потенциально становится мусором), а новое значение добавляется. Нет операции обновления.

Текущая реализация по-прежнему хранит временные файлы в некоторых ситуациях, например, в папке RMI client. Эти случаи будут изменены, чтобы использовать хранилище данных непосредственно там, где это имеет смысл.

Посмотрев на ваше исключение: DataStoreException (no security manager: RMI class loader disabled), мы пришли к мысли, что у вашего клиента просто нет разрешения на сервер RMI. И на эти вопросы уже были даны ответы здесь: Java: без диспетчера безопасности: RMI загрузчик классов отключен

person BSeitkazin    schedule 27.12.2018
comment
Привет, спасибо за ваш ответ. Я проверил ссылку, которую вы предоставили. Но мы не видим вариантов, как настроить это разрешение в RMI. - person Rajesh Chandrasekar; 27.12.2018
comment
как настроить разрешение в RMI я предоставил в последнем предложении ссылку на другой вопрос в stackoverflow - person BSeitkazin; 28.12.2018
comment
кстати, это другой вопрос. 2 вопроса - 2 сообщения с вопросами - person BSeitkazin; 28.12.2018