Sac*_*ade 18 java spring web-services servlet-filters
我们使用RESTEasy编写了Web API .我们希望为处理Google Batch请求处理工作方式的批处理请求提供支持.
以下是目前使用的方法,
我们有一个过滤器,接受传入的多部分请求.然后,此过滤器创建多个模拟请求和响应对象,然后使用这些模拟请求调用chain.doFilter.
public class BatchRequestProcessingFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
MockHttpServletRequest[] mockRequests = BatchRequestProcessorUtils.parseRequest(request);
MockHttpServletResponse[] mockResponses = new MockHttpServletResponse[mockRequests.length];
for(int i=0 ; i <= mockRequests.length ; i++ ) {
chain.doFilter(mockRequests[i], mockResponses[i], chain);
}
BatchRequestProcessingUtils.populateResponseFromMockResponses(res, mockResponses);
}
}
Run Code Online (Sandbox Code Playgroud)
MockHttpServletResponseclass返回一个OutputStream包装的虚拟对象ByteArrayOutputStream.
BatchRequestProcessorUtils 解析multipart请求并返回包装实际请求的mock请求,但返回实际请求主体的split body中指定的头.
我找不到任何支持批量请求处理的现有库.所以我的问题是,这是支持批量请求的正确方法还是应该使用哪种标准方法?
请注意,我们使用的是Tomcat 8.
萨钦·戈拉德。我没有听说过这样的库,但我认为你的方法是合理的。如果我必须解决这个问题,我会这样想:
我认为应该有两种机制:
当然,这两个部分可以耦合(例如共享“包装器”模块),因为我们必须以相同的方式包装和解开对象。
另外,如果我致力于它,我会尝试开发客户端机制,就像我用来发送常规请求的类上的装饰器一样。在这种情况下,我可以在需要时随时替换常规/批处理模式。
希望我的意见对你有帮助。
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |