部署在 Tomcat 中的应用,怎么在应用初始化的时候,拿到应用的端口?

2017-05-02 18:48:41 +08:00
 mortonnex

在应用初始化的时候

也即是说,不能从 request 中拿

1756 次点击
所在节点    程序员
6 条回复
johnny23
2017-05-02 18:59:43 +08:00
没用过...但是端口都是在 xml 里面配置的 按理可以读取这个 xml 的 我猜的...
kevinzhwl
2017-05-02 19:55:19 +08:00
通过 java 环境变量带进去,读 server.xml,或者启动之后立刻给自己发个 request。都行但也都不能 100%
SoloCompany
2017-05-02 20:25:41 +08:00
connector 和 catalina 是两个完全独立并且平行的模块
理论上 host 以及 app ( servlet context )这一层是没有 ip 地址和端口概念的,和你在生命周期的哪一个阶段并无关联
所以你只能选择和容器实现完全捆绑的方法去实现,比如,通过 catalina.base property 找到 conf 目录位置,然后打开 server.xml 去解释 connector 的配置
woshixiaohao1982
2017-05-02 22:49:18 +08:00
没有用 servlet 规范里面 没有这个接口
beneo
2017-05-02 22:57:48 +08:00
下载的 tomcat 是 conf/server.xml 配置的,如果是内嵌 tomcat 是可以代码设置的
chocotan
2017-05-03 09:05:33 +08:00
http://stackoverflow.com/questions/3867197/get-the-server-port-number-from-tomcat-with-out-a-request
上面链接里第二个答案在 tomcat7 下面是可以的,tomcat8 没试

如果是 spring-boot,可以 @LocalServerPort

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/358609

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX