Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Spring Cloud Netflix:ZuulServlet在ZuulConfiguration中发生了什么?_Spring_Spring Boot_Spring Cloud - Fatal编程技术网

Spring Cloud Netflix:ZuulServlet在ZuulConfiguration中发生了什么?

Spring Cloud Netflix:ZuulServlet在ZuulConfiguration中发生了什么?,spring,spring-boot,spring-cloud,Spring,Spring Boot,Spring Cloud,往里看,我看到了以下情况: @Bean public ZuulController zuulController() { return new ZuulController(); } @Bean public ServletRegistrationBean zuulServlet() { return new ServletRegistrationBean(new ZuulServlet(), this.zuulProperties.getServlet

往里看,我看到了以下情况:

@Bean
public ZuulController zuulController() {
    return new ZuulController();
}

@Bean
public ServletRegistrationBean zuulServlet() {
    return new ServletRegistrationBean(new ZuulServlet(),
            this.zuulProperties.getServletPattern());
}   
包装ZuulServlet并像管理Spring控制器一样管理其生命周期。让我吃惊的是,ZuulConfiguration类使用ServletRegistrationBean以任何方式注册servlet。也许我想错了,但我认为你会做一件或另一件事。有人能解释一下为什么两者都是必要的吗

使用此配置,ZuulServlet是作为真正的servlet(嵌入式servlet容器称之为servlet)、控制器(委托给servlet)运行,还是同时作为两者运行

谢谢

约书亚来自:

允许Zuul代理中的多部分请求流式传输

事实证明,Zuul的多部分请求非常糟糕 几乎完全来自Spring中的多部分处理 调度员服务。此更改使代理路由可用 在另一条道路上/zuul/(其中 /zuul是zuul.servletPath的默认值)。我有 使用中的main方法测试了800MB文件上传 FormZuulServletProxyApplicationTests和主要 观察结果是没有OutOfMemory错误(没有人尝试) 下载完整的请求正文)。它与Ribbon一起工作 并使用简单(HttpClient)过滤器。和你在一起 如果要上载文件,则需要设置一些超时 与之一样大,例如,参见测试中的application.yml:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
ribbon:
  ConnectTimeout: 3000
  ReadTimeout: 60000
您需要在 传入请求。默认情况下,Chrome不会这样做 显然,但我可以用卷曲来测试,例如

$ curl -v -H "Transfer-Encoding: chunked" \
  -F "file=@mylarg.iso" \
  localhost:9999/zuul/direct/file
通过DispatcherServlet的旧代理路径仍然有效 可用(用于向后兼容和方便
在上下文路径的根目录下有可用的路径)。

Ok,查看提交时,默认情况下,流量似乎是通过DispatcherServlet路由的。如果是这样的话,我可以在点击ZuulController之前利用拦截器。是的,假设你的意思是这样做的一个技巧是如果你使用的是WebKit浏览器和标准JavaScript XMLRequest。它似乎不支持将传输编码作为安全头。这在没有分块传输编码的情况下对我有效。我不明白这对于公开的端点是如何工作的。如何让单个服务在同一端点上处理正常rest和多部分?例如,一个用户端点在上,而大图片上传在上,而没有它?