2017-06-29 2 views
0

Ich bin ein Domino-Web-Service-Provider implementieren, deren Zweck ist, aus dem Base64-Format, die in dem Client, der den Web-Service verbraucht, ist eine Anlage Datei, wandelt es in eine Datei zurück. In dem Web-Service-Provider, der in Java entwickelt wird, verwende ich die Stream-Klasse und die Mime-Klassen, um den Stream und die Datei zu konvertieren. Der Web-Service-Provider funktioniert gut für Dateien bis zu 5 MB, für größere Dateien wird der Fehler technote angezeigt. Hat jemand dieses Problem schon gehabt? Gibt es einen Weg dahin?Domino-Web-Service-Provider-Einschränkung

Hier ist der Code für den Anbieter Web-Service ist

public class criaAnexo { 
private Vector itemsToRecycle; 
public void attachDocument(byte[] is) { 

    // creating the output stream used to create the MIME attachments 
    try 
    { 

     itemsToRecycle = new Vector(); 
     Session session = NotesFactory.createSession(); 
     Database db = session.getDatabase("Serverx", "base.nsf"); 
     if (!db.isOpen()) 
      System.out.println("names2.nsf does not exist on snapper"); 
     else 
     { 
      Stream outStream = session.createStream(); 
      outStream.write(is); 


      session.setConvertMIME(false); 

      // create the MIME body 
      Document doc = db.createDocument(); 
      doc.replaceItemValue("Form", "formAttachment"); 
      MIMEEntity body = doc.createMIMEEntity(); 


      // create a child for each attachment<br/> 
      MIMEEntity child = body.createChildEntity(); 

      // find the fileSuffix<br/> 
      //String fileSuffix = files[i].substring(files[i].lastIndexOf(".")+1); 
      String fileSuffix = "pdf"; 


      // set the child to the outstream using a mapped MIME type<br/> 
      // MIME type mapping see: http://www.w3schools.com/media/media_mimeref.asp 

      //child.setContentFromBytes(outStream, mapMIMEType(fileSuffix), MIMEEntity.ENC_IDENTITY_BINARY); 

      child.setContentFromBytes(outStream, "application/pdf", MIMEEntity.ENC_IDENTITY_BINARY); 


      // set name for file attachment<br/> 
      MIMEHeader header = child.createHeader("Content-Disposition"); 
      header.setHeaderVal("attachment; filename=\"teste.pdf\""); 

      // set unique id for file attachment to be able to refer to it<br/> 
      header = child.createHeader("Content-ID"); 
      header.setHeaderVal("teste.pdf"); 

      //outStream.truncate(); 
      //outStream.close(); 
      outStream.close(); 
      Runtime rt = Runtime.getRuntime(); 
      long total_mem = rt.totalMemory(); 
      long free_mem = rt.freeMemory(); 
      long used_mem = total_mem - free_mem; 
      System.out.println("Total de Memória:"+total_mem); 
      System.out.println("Total de Memória livre:"+free_mem); 
      System.out.println("Total de memoria usada pelo agente: " + used_mem/1048576); 


      doc.save(true, true); 
      itemsToRecycle.add(doc); 
      session.recycle(itemsToRecycle); //recycle all items added to vector 
      session.recycle(); 

     } 



    } 
    catch(Exception e) 
    { 
    } 
} 

}

+0

Haben Sie die Einstellung "Maximale Größe der Anforderungsinhalte" im Server-Dokument Ihres Domino Servers und die Einstellung "Maximale POST-Daten" im entsprechenden Website-Konfigurationsdokument betrachtet? Hier finden Sie eine Beschreibung: https://www.ibm.com/support/knowledgecenter/de/SSKTMJ_8.5.3/com.ibm.help.domino.admin85.doc/H_RESTRICTING_THE_AMOUNT_OF_DATA_USERS_CAN_SEND_TO_THE_SERVER_STEPS.html –

+0

Beide Parameter sind auf 10 MB eingestellt. –

Antwort

0

Tatsächlich tritt die Einschränkung in dem Client auf, der den Webdienst verbraucht, den ich in dem Domino selbst implementierte. Die Technote, die in der Beschreibung des Problems zitiert wird, impliziert, dass das Problem auf der Seite des Anbieters liegt, aber in der Tat ist es nicht. Als ich den Web-Service-Client auf dem dot net umsetzte, wurde die Datei problemlos gestreamt.

+0

Komplementär tritt nur das Problem auf, wenn Sie den Client implementieren, um den Webdienst in Lotusscript zu konsumieren. In Java tritt das Problem nicht auf. –

0

Aufgrund Base64-Codierung und andere Gemeinkosten, Dateien, die größer als 5 MB die 10 MB überschreiten können Grenzen Sie für die so konfiguriert haben, Maximale Größe des Anforderungsinhalts und Maximale POST-Daten Einstellungen für Ihren Server. Versuche sie zu erhöhen.

+0

Ich habe beide Parameter auf 50 MB erhöht und der Fehler bleibt bestehen. –

+0

Haben Sie den http-Task des Servers neu gestartet? Ich bin mir nicht sicher, ob das nötig ist, aber es könnte sein. –

+0

Ja, ich habe den gesamten Domino neu gestartet. –