私はP8に大きなドキュメントをアップロードしようとしていますFileNetのJava APIのバージョン5.1.0.3は、FileNetコンテンツ・エンジンに大きなドキュメントをアップロード
を使用します。 FileInputStreamを使用してファイルを読み込み、入力ストリームをcontentTransfer.setCaptureSource(file)に設定しています。私はOOMの例外(完全なstacktrace以下)を取得しています。ヒープメモリ内のドキュメント全体を読み込もうとしているように見えますが、私が望むものではないので、ドキュメントをP8にストリーミングしたいと思います。
コード
//Get CE Connetcion
//Create Subject
//Push Subject
//Get Domain (domain)
ObjectStore os = null;
objectStoreName = "COS"
os = Factory.ObjectStore.fetchInstance(domain, objectStoreName, null);
//Get Folder
Folder folder=null;
folderName = ''/Sample";
folder=Factory.Folder.fetchInstance(os, folderName, null);
//Get the File details
InputStream file = "";
String fileName = "";
int fileSize = "";
// Create Document
String docClass = "dcumnet class name";
Document doc = Factory.Document.createInstance(os, docClass);
if (file != null && fileSize > 0) {
ContentTransfer contentTransfer = Factory.ContentTransfer.createInstance();
contentTransfer.setCaptureSource(file);
contentElementList.add(contentTransfer);
doc.set_ContentElements(contentElementList);
contentTransfer.set_RetrievalName(fileName);
doc.set_MimeType(getMimetype(fileName));
}
//Check-in the doc
doc.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY,CheckinType.MAJOR_VERSION);
//Get and put the doc properties
String documentName =""
Properties p = doc.getProperties();
p.putValue("DocumentTitle","abcd");
p.putValue("Name","Rakesh");
p.putValue("Number","");
doc.save(RefreshMode.REFRESH)
あなたはP8へのストリームとして大きな文書を送信する方法を、助けてくださいことはできますか?
Caused by: java.lang.OutOfMemoryError: Java heap space
at weblogic.utils.io.UnsyncByteArrayOutputStream.resizeBuffer(UnsyncByteArrayOutputStream.java:59) ~[com.bea.core.utils_1.10.0.0.jar:1.10.0.0]
at weblogic.utils.io.UnsyncByteArrayOutputStream.write(UnsyncByteArrayOutputStream.java:89) ~[com.bea.core.utils_1.10.0.0.jar:1.10.0.0]
at com.filenet.apiimpl.wsi.MtomOutputStream.write(MtomOutputStream.java:39) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.wsi.AttachmentHelperNst.spillAndClearAttachments(AttachmentHelperNst.java:137) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.wsi.ServiceSessionNst.bCloseSoapEnvelopeAndWriteAttachments(ServiceSessionNst.java:262) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.wsi.ServiceSessionNst.cReqRespPath(ServiceSessionNst.java:159) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.wsi.ServiceSessionNst.executeChanges(ServiceSessionNst.java:71) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.util.SessionHandle.executeChanges(SessionHandle.java:130) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.core.Session.callExecuteChanges(Session.java:142) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.core.Session.executeChanges(Session.java:525) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.core.Session.executeChange(Session.java:816) ~[Jace.jar:dap501.003.019]
at com.filenet.apiimpl.core.IndependentlyPersistableObjectImpl.save(IndependentlyPersistableObjectImpl.java:83) ~[Jace.jar:dap501.003.019]
入力ストリームをバッファリングされた入力ストリームにラッピングしていますか? –
@ChristopherPowellエラーは、サーバーにデータを書き込むために指定された出力ストリームで発生します。ファイルがどのように読み込まれているかの詳細は、これとは関係ありません。バッファリング(すでに内部で既に使用されている可能性が高い)はメモリ消費量を増加させるだけです。 – fnt
@fnt、あなたは正しいです。私はその部分を逃した。だから、彼のコードではそれほど問題ではなく、むしろバグのあるバージョン(あなたの提案どおり)またはWebLogicのセットアップのいずれかの問題です。私たちがここで話しているファイルのサイズを定義するのに役立つかもしれません。 –