• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mortonnex
V2EX  ›  程序员

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

  •  
  •   mortonnex · May 2, 2017 · 2143 views
    This topic created in 3325 days ago, the information mentioned may be changed or developed.

    在应用初始化的时候

    也即是说,不能从 request 中拿

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

    如果是 spring-boot,可以 @LocalServerPort
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1026 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 18:54 · PVG 02:54 · LAX 11:54 · JFK 14:54
    ♥ Do have faith in what you're doing.