DominoWeb服务提供程序限制

DominoWeb服务提供程序限制,web,service,stream,lotus-domino,Web,Service,Stream,Lotus Domino,我正在实现一个DominoWeb服务提供者,其目的是从base64格式(在使用web服务的客户机中是一个附件文件)流式传输,将其转换回一个文件。在用java开发的web服务提供者中,我使用Stream类和Mime类来转换流和文件。web服务提供程序适用于最大为5MB的文件,对于较大的文件,错误如下所示。有人有这个问题吗?有什么办法吗 以下是web服务提供商的代码 public class criaAnexo { private Vector itemsToRecycle; public void

我正在实现一个DominoWeb服务提供者,其目的是从base64格式(在使用web服务的客户机中是一个附件文件)流式传输,将其转换回一个文件。在用java开发的web服务提供者中,我使用Stream类和Mime类来转换流和文件。web服务提供程序适用于最大为5MB的文件,对于较大的文件,错误如下所示。有人有这个问题吗?有什么办法吗

以下是web服务提供商的代码

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)
    {
    }
}
公共级Criaanex{
私有向量循环;
公共作废附件文档(字节[]为){
//创建用于创建MIME附件的输出流
尝试
{
itemsToRecycle=新向量();
会话会话=NotesFactory.createSession();
Database db=session.getDatabase(“Serverx”、“base.nsf”);
如果(!db.isOpen())
System.out.println(“Snaper上不存在names2.nsf”);
其他的
{
Stream outStream=session.createStream();
流出。写入(is);
session.setConvertMIME(false);
//创建MIME主体
Document doc=db.createDocument();
文件替换项值(“格式”、“格式附件”);
MIMEEntity body=doc.createMIMEEntity();
//为每个附件创建一个子项
MIMEEntity child=body.createChildEntity(); //查找文件uffix
//字符串fileSuffix=files[i]。子字符串(files[i].lastIndexOf(“.”+1); 字符串fileSuffix=“pdf”; //使用映射的MIME类型将子对象设置为扩展流
//MIME类型映射请参见:http://www.w3schools.com/media/media_mimeref.asp //setContentFromBytes(扩展流、mapMIMEType(fileSuffix)、MIMEEntity.ENC_IDENTITY_BINARY); setContentFromBytes(扩展流,“application/pdf”,MIMEEntity.ENC_IDENTITY_BINARY); //设置文件附件的名称
MIMEHeader=child.createHeader(“内容处置”); setHeaderVal(“附件;文件名=\”teste.pdf\”); //设置文件附件的唯一id以便能够引用它
header=child.createHeader(“内容ID”); header.setHeaderVal(“teste.pdf”); //exptream.truncate(); //exptream.close(); exptream.close(); Runtime rt=Runtime.getRuntime(); long total_mem=rt.totalMemory(); long free_mem=rt.freemory(); 长期使用的内存=总内存-自由内存; System.out.println(“Total de Memória:+Total_Mem”); System.out.println(“生活的全部:+free_Mem”); System.out.println(“美国邮政署总记录:+已使用的备忘录/1048576”); 单据保存(true,true); itemsToRecycle.add(doc); session.recycle(itemsToRecycle);//回收添加到vector的所有项目 session.recycle(); } } 捕获(例外e) { } }

}

由于base64编码和其他开销,大于5 MB的文件可能会超过您为服务器的请求内容的最大大小最大发布数据设置所配置的10 MB限制。尝试增加它们。

事实上,限制发生在使用我在domino中实现的web服务的客户机上。在对问题的描述中引用的技术说明意味着问题在提供者方面,但事实并非如此。当我在dot net上实现web服务客户端时,文件流式传输没有问题。

您是否查看了Domino服务器的服务器文档中的“请求内容的最大大小”设置,以及相应网站配置文档中的“最大POST数据”设置?请参阅此处了解说明:两个参数都设置为10 MB。我将两个参数都增加到50 MB,错误仍然存在。是否重新启动了服务器的http任务?我不确定是否需要这样做,但可能需要。是的,我重新启动了整个Domino。然后我就没有主意了。只有在实现客户机以使用lotusscript中的web服务时,补充才会出现问题。在Java中,这个问题不会发生。