0

XML とバイナリ データの両方の DBMS として eXist を使用しています。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 でメソッド retrieve の呼び出しに失敗しました: 結果セットが不明またはタイムアウトになりました

プログラムを起動するたびに、このエラーが別のファイルに表示されます。約 250 個のファイルを含むディレクトリで、7 ~ 12 個のエラーが発生します。期限が切れるタイムアウトの可能性があると思いましたが、eXistサーバーは仮想マシン上にあるため通信が非常に高速であり、さらにディレクトリに含まれるファイルの種類が異なり、小さなxmlファイルでもエラーが発生しますが、たとえば、はるかに大きな SWF アニメーションを格納します。

サーバーへのすべてのリクエストはシーケンシャルで、私以外にそれを使用するユーザーはいません。

原因が何であるかを理解するために誰かが私にアドバイスをくれることを本当に願っています. 前もって感謝します :)

4

1 に答える 1

0

同じことを行う別の方法を見つけました。XQueryを実行する代わりに、XML:DB APIを使用して必要なファイルを直接保存することで問題を解決しました。

だから私は Collection.createResource と Collection.storeResource を使用し、すべてうまくいきました:)

于 2012-06-07T12:49:34.470 に答える