0

FileNet Java API バージョン 5.1.0.3 の使用

大きなドキュメントを P8 にアップロードしようとしています。FileInputStream を使用してファイルを読み取り、入力ストリームを contentTransfer.setCaptureSource(file); に設定しています。OOM 例外が発生しています (以下の完全なスタック トレース)。ドキュメント全体をヒープメモリで読み取ろうとしているように見えますが、それは私が望むものではなく、ドキュメントを 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","01234"); 


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]
4

1 に答える 1

2

WSI使用しているトランスポートは、任意のサイズのコンテンツを転送できます。MTOMストリーミングされる添付ファイルを利用しますHTTP。あなたのケースで巨大なバッファを割り当てようとする理由は明らかではありません。ストリーミングにはバッファリングも必要ですが、大きなバッファは必要ありません。

あなたが使用していて何も凝っていないと仮定すると、それはクライアント ライブラリjava.io.FileInputStreamのバグのように見えます。このバージョンは 4 年以上前のものであり、それ以降いくつかのフィックスパックが存在するContent Engineことに注意してください(最新のものは です)。5.1.0.35.1.0.7

于 2017-11-29T00:33:26.617 に答える