request.getLocalPort() 获取的到底是什么?
API 的说明不是十分详细:
“Returns the Internet Protocol (IP) port number of the interface on which the request was received. ”
我想这其中的 “the interface on which the request was received” 应该是当前的 servlet 容器吧。例如 Tomcat。
可是我做了一个测试,使用 apache 与 Tomcat 进行整合。apache 的端口是 8096 , Tomcat 的端口是 8080 。我原以为通过 apache (即通过 8096 端口)对 servlet 或 jsp 进行访问时,在 filter 中调用的 request.getLocalPort() 会返回 8080 ,可结果却返回了 8096.
再看 API 说明时,便不知道“ interface ”指的到底是哪个了。因为 apache 也曾 received the request 。
可是如果这个 “ interface ”是指第一个接收到请求的 WEB 服务器(如本例中的 apache)。那么 request.getLocalPort() 和 request.getServerPort() 又有什么区别呢?
在网上找过资料,但都无功而返。一些资料提到, 在“均衡负载”的环境中,调用 request.getLocalPort() 将可以获得当前 servlet 容器所监听的端口(划线部分并不是原文,而是我的理解)。可是我只使用过 apache + tomcat 进行“均衡负载”,可测试又没有“成功”。而“集群”根本没有接触过。所以如若有朋友通过“均衡负载”来解释 request.getLocalPort() 的话,还望详细,最好能有个例子。
望指教。。