ビューをループして各文書から添付ファイルを取得するJavaエージェントがあります。添付ファイルは文書xmlデータを含む.dxlファイルです。私は、いくつかの一時ディレクトリでファイルを抽出し、抽出されるとすぐに、抽出された.dxlをインポートしようとしています。ループ内のDxlImporterエラー "DXLインポータ操作が失敗しました"
しかし、ここで問題は、それが唯一の輸入は、あるか、ループの最初の文書の添付ファイル上で動作し、Javaのデバッグコンソールにエラーがスロー
NotesException: DXL importer operation failed
at lotus.domino.local.DxlImporter.importDxl(Unknown Source)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
私のJavaエージェント・コードが
public class JavaAgent extends AgentBase {
static DxlImporter importer = null;
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
// Get current database
Database db = agentContext.getCurrentDatabase();
View v = db.getView("DXLProcessing_mails");
DocumentCollection dxl_tranfered_mail = v.getAllDocumentsByKey("dxl_tranfered_mail");
Document dxlDoc = dxl_tranfered_mail.getFirstDocument();
while(dxlDoc!=null){
RichTextItem rt = (RichTextItem) dxlDoc.getFirstItem("body");
Vector allObjects= rt.getEmbeddedObjects();
System.out.println("File name is "+ allObjects.get(0));
EmbeddedObject eo = dxlDoc.getAttachment(allObjects.get(0).toString());
if(eo.getFileSize()>0){
eo.extractFile(System.getProperty("java.io.tmpdir") + eo.getName());
System.out.println("Extracted File to "+System.getProperty("java.io.tmpdir") + eo.getName());
String filePath = System.getProperty("java.io.tmpdir") + eo.getName();
Stream stream = session.createStream();
if (stream.open(filePath) & (stream.getBytes() >0)) {
System.out.println("In If"+System.getProperty("java.io.tmpdir"));
importer = session.createDxlImporter();
importer.setDocumentImportOption(DxlImporter.DXLIMPORTOPTION_CREATE);
System.out.println("Break Point");
importer.importDxl(stream,db);
System.out.println("Imported Sucessfully");
}else{
System.out.println("In else"+stream.getBytes());
}
}
dxlDoc = dxl_tranfered_mail.getNextDocument();
}
} catch(Exception e) {
e.printStackTrace();
}
ですコードは "Break Point"を出力してエラーをスローしますが、最初に添付ファイルをインポートするまで実行します。
その他のケースでは、ファイルシステムからの特定のdxlファイルdxlをエラーなしでデータベースの文書としてインポートします
渡されたストリームの問題であるかどうかわかりませんが、完了しておらず、次のループが実行されます。
どのような提案も参考になります。
短い答え:個々の操作を独自の方法で移動してループを制限するメソッドを呼び出す、リサイクルして次の文書に進むリサイクル!!!! – stwissel