我正在使用eXist作为XML和二进制数据的DBMS。 我正在使用XMLDB API通过Java程序与它进行交互。 为了存储我的数据,我以这种方式在XQuery中使用 xmldb:store 函数:
xmldb:store('Collection Name', 'Id','Document Contents') //for XML documents
xmldb:store('Collection Name', 'Id','Base64 Encoded Contents', 'application/octet-stream') //for binary data
我正在尝试编写一个程序来读取文件夹中的文件并将它们保存在数据库中,为每个文件调用正确的存储功能。 二进制数据由图像,pdf文件,一些swf动画等组成。
当我为大多数资源启动程序时,上传完成且没有错误,但对于其中一些我得到了这个例外:
XMLDBException:无法在类org.exist.xmlrpc.RpcConnection中调用方法检索:结果集未知或超时
每次启动程序时,此错误都会显示在不同的文件上。在包含大约250个文件的目录中,我得到7到12个错误。 我认为它可能是超时,但是eXist服务器在虚拟机上,因此通信非常快,加上目录中包含的文件属于不同的类型,即使在小的xml文件上也会出现错误,例如,它存储了更大的swf动画。
对服务器的所有请求都是顺序的,除了我之外没有其他用户使用它。
我真的希望有人可以给我一些建议,以了解原因是什么。 提前谢谢:)
答案 0 :(得分:0)
好的,我找到了另一种方法来做同样的事情。我使用XML解决了这个问题:DB API直接存储我需要的文件而不是执行XQuery。
所以我使用了Collection.createResource和Collection.storeResource,并且都工作了:)