request.getLocalPort() 获取的到底是什么?

java_2008_4_4 java_2008_4_4 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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() 的话,还望详细,最好能有个例子。

望指教。。
...全文
评论 9
收藏 已收藏
分享
返回顶部
java_2008_4_4
Java SE 62,620 成员 307,251 内容