使用API​​将大文件上传到JackRabbit存储库

时间:2018-12-27 04:11:15

标签: java jackrabbit jackrabbit-oak

我们将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中进行配置。附加了屏幕截图的错误消息。

enter image description here

我们想使用CreateDocumentFromFilePath API将大文件上传到'JackRabbit Repository'。

您能帮助我们解决此问题吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

让我们查看关于Database Data Store的Jackrabbit文档,并查看:

  

添加二进制对象时,Jackrabbit将检查其大小。当它大于minRecordLength(默认为100字节)时,它将被添加到数据存储中,否则将保留在内存中。这是很早完成的(调用Property.setValue(stream)时可能)。仅唯一数据标识符存储在持久性管理器中(存储数据的内存中对象除外)。更新值时,旧值将保留在此处(有可能成为垃圾),而新值将被添加。没有更新操作。

     

在某些情况下,例如在RMI client中,当前实现仍存储临时文件。这些情况将更改为在有意义的地方直接使用数据存储。

在查看了您的异常:DataStoreException (no security manager: RMI class loader disabled)之后,我们得出一个想法,即您的客户端没有RMI服务器的权限。这个问题已经在这里得到解答:Java: no security manager: RMI class loader disabled