如何配置tomcat在单个应用程序中为不同的端点使用不同的端口?

时间:2016-06-22 10:58:08

标签: java spring apache tomcat

我有一个tomcat .war应用程序,它有许多端点。我们说它们是:

http://myapp.com/myapp/endpoint.a
http://myapp.com/myapp/endpoint.b

我希望http://myapp.com/myapp/endpoint.a通过端口80可用,http://myapp.com:8080/myapp/endpoint.b只能 通过端口8080提供。

我无法在tomcat前面使用apache,/myapp/endpoint.b在与/myapp/endpoint.a相同的端口上可访问是不可接受的。

也不可能将端点拆分到不同的应用程序上下文中。

到目前为止:

1 个答案:

答案 0 :(得分:3)

可以在应用程序级别使用以下组合解决:

  • PortAuthorisationFilter中配置的自定义web.xml,其中包含我们要限制的端点的过滤映射:

<url-pattern>*.b</url-pattern>

  • 在过滤器内部,我们检查ServletRequest.getLocalPort()等于:8080并拒绝请求。该方法声称是TCP连接中使用的端口,因此不能被欺骗。

在tomcat级别,我们在端口http80上有8080个连接器,适用于整个应用程序。