Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Servlet 3.1-多部分异步处理_Java_Servlets_Asynchronous_Multipart - Fatal编程技术网

Java Servlet 3.1-多部分异步处理

Java Servlet 3.1-多部分异步处理,java,servlets,asynchronous,multipart,Java,Servlets,Asynchronous,Multipart,我正在测试Servlet3.1API以处理多部分请求。我对以同步方式(文本字段)和异步方式(文件字段)处理某些部分感兴趣。乍一看,Servlet 3.1中似乎不提供它(或者在异步上下文中通过request.getInputStream()完全异步,或者类似于apache commons fileupload库的多部分处理) 有没有办法使用Servlet3.1获得这种同步/异步处理 提前感谢您抽出时间!:) 如果您能确保所有文本字段都排在第一位,那么您应该能够先同步读取这些字段,然后异步读取文件字

我正在测试Servlet3.1API以处理多部分请求。我对以同步方式(文本字段)和异步方式(文件字段)处理某些部分感兴趣。乍一看,Servlet 3.1中似乎不提供它(或者在异步上下文中通过request.getInputStream()完全异步,或者类似于apache commons fileupload库的多部分处理)

有没有办法使用Servlet3.1获得这种同步/异步处理


提前感谢您抽出时间!:)

如果您能确保所有文本字段都排在第一位,那么您应该能够先同步读取这些字段,然后异步读取文件字段


否则,只有同步或异步地将整个请求读入内存,然后直接处理文本字段并将文件字段提交到某个线程池中,才能实现这一点。

我一直在搜索一个类似的示例,我感到惊讶的是,在发布原始问题一年后,没有多少问题

无论如何,我正要写我自己的,但我更高的判断力开始发挥作用,谷歌也出手相救。Grizzly项目在这里编写了一个异步多部分示例:


这不能直接插入Servlet 3.1 readListener,但我认为它应该相当直接地进行调整(我的下一个任务)。

不可能在同步/异步之间切换,没有任何公共库/API支持这一点

ServletAPI在版本3.0中增加了对上传处理的支持,但它完全被阻塞了

该库具有流式API,您可以通过阻塞或异步方式调用该API,但是您必须自己实现它


您还可以使用library,它可以配置为在阻塞模式或异步模式下工作(通过实现ReadListener接口)。如果您知道某些请求只包含文本字段或小文件,那么您可以基于此进行配置。

Synchronoss Technologies最近公开了一个非阻塞HTTP多部分解析器,可与Servlet 3.1一起使用

您只需编写Servlet3.1
ReadListener
,将传入的字节传递给
NioMultipartParser
。解析器将为收到的每个部分回调代码


免责声明:我为Synchronoss Technologies工作。我们将其开源,因为实现起来相当麻烦!Servlet 3.1提供的功能似乎存在差距,因此希望其他人会发现此库很有用。

创建一个
ExecutorService
,并提交单独的任务。您是否有时间将Grizzly的MultipartScanner实现的一个端口连接到Servlet 3.1 ReadListener?是,它还没有完成,但我确实希望当readyI最近遇到它时,能在GitHub上发布它。这是你的吗?那是我的图书馆。如果你有任何问题,我很乐意帮忙。很好!!!谢谢你的开源!!!我一有机会就试试看!;)