V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mortonnex
V2EX  ›  程序员

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

  •  
  •   mortonnex · 2017-05-02 18:48:41 +08:00 · 1753 次点击
    这是一个创建于 2762 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在应用初始化的时候

    也即是说,不能从 request 中拿

    6 条回复    2017-05-03 09:05:34 +08:00
    johnny23
        1
    johnny23  
       2017-05-02 18:59:43 +08:00 via iPhone
    没用过...但是端口都是在 xml 里面配置的 按理可以读取这个 xml 的 我猜的...
    kevinzhwl
        2
    kevinzhwl  
       2017-05-02 19:55:19 +08:00
    通过 java 环境变量带进去,读 server.xml,或者启动之后立刻给自己发个 request。都行但也都不能 100%
    SoloCompany
        3
    SoloCompany  
       2017-05-02 20:25:41 +08:00 via iPhone
    connector 和 catalina 是两个完全独立并且平行的模块
    理论上 host 以及 app ( servlet context )这一层是没有 ip 地址和端口概念的,和你在生命周期的哪一个阶段并无关联
    所以你只能选择和容器实现完全捆绑的方法去实现,比如,通过 catalina.base property 找到 conf 目录位置,然后打开 server.xml 去解释 connector 的配置
    woshixiaohao1982
        4
    woshixiaohao1982  
       2017-05-02 22:49:18 +08:00
    没有用 servlet 规范里面 没有这个接口
    beneo
        5
    beneo  
       2017-05-02 22:57:48 +08:00
    下载的 tomcat 是 conf/server.xml 配置的,如果是内嵌 tomcat 是可以代码设置的
    chocotan
        6
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.