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和多部分?例如,一个用户端点在上,而大图片上传在上,而没有它?