netflix zuul-simple-webapp.war在tomcat下启动

时间:2021-04-26 23:31:49

按照netflix 在github 的wiki的文档使用

gradlew jettyRun

可以启动jetty来进行测试。

在本地build war 以后,我放在tomcat 运行的时候,却不可以运行。

这里遇到了一些问题,记录如下:

1. Connection pool is shut down.

经查,这个是样例中groovy/filters/route/SimpleHostRoutingFilter 使用HttpClient 不当的问题。

在启动jetty中也可以观察到。

netflix zuul-simple-webapp.war在tomcat下启动
 
2. url在tomcat 无法打开的问题
在github 的wiki 文档中可以看到 localhost:8080/ 是可以看到apache.org的页面的。
而在tomcat中明显需要 ContextPath. 于是切换成 localhost:8080/zuul/ 无法看到任何东西。
 
原因在于,其中routing 的时候,在 groovy/filters/route/SimpleHostRoutingFilter 中使用了
request.getRequestUri()
其中包含了 /zuul/
于是本来是请求 http://apache.org/ 的,在tomcat中变成了 http://apache.org/zuul,于是tomcat中请求就无法正常相应了。
 
解决方案:
修改groovy/filters/route/SimpleHostRoutingFilter 中代码