0

私は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] 
+0

入力ストリームをバッファリングされた入力ストリームにラッピングしていますか? –

+0

@ChristopherPowellエラーは、サーバーにデータを書き込むために指定された出力ストリームで発生します。ファイルがどのように読み込まれているかの詳細は、これとは関係ありません。バッファリング(すでに内部で既に使用されている可能性が高い)はメモリ消費量を増加させるだけです。 – fnt

+0

@fnt、あなたは正しいです。私はその部分を逃した。だから、彼のコードではそれほど問題ではなく、むしろバグのあるバージョン(あなたの提案どおり)またはWebLogicのセットアップのいずれかの問題です。私たちがここで話しているファイルのサイズを定義するのに役立つかもしれません。 –

答えて

2

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

java.io.FileInputStreamを使用していて空想がないと仮定すると、Content Engineクライアントライブラリのバグのようです。バージョン5.1.0.3は4歳以上であり、その後いくつかのフィックスパックがあることに注意してください(最新のものは5.1.0.7です)。

+0

問題はAPIバージョンに関連していないようですが、私はあなたの提案を受け取ります。最新のAPIにアップグレードする価値があります.. –

+0

@RakeshPrajapati私はCEクライアントこの特定のバージョンではありませんでしたが、過去に同様の問題があったので、まず最初に。一旦原因を突き止めて解決策を見つけたら、答えとしてそれを持つことは素晴らしいことです。実際には、UseSunHttpHandlerを設定するのは一種の解決策です。私はちょうどその答えに質問が残らないようにすることを意味しました。 – fnt

関連する問題