netflix zuul-simple-webapp.war在tomcat下启动
按照netflix 在github 的wiki的文档使用
gradlew jettyRun
可以启动jetty来进行测试。
在本地build war 以后,我放在tomcat 运行的时候,却不可以运行。
这里遇到了一些问题,记录如下:
1. Connection pool is shut down.
经查,这个是样例中groovy/filters/route/SimpleHostRoutingFilter 使用HttpClient 不当的问题。
在启动jetty中也可以观察到。
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 中代码