Java 获取应用程序端口而不访问请求对象

Java 获取应用程序端口而不访问请求对象,java,spring,jetty,Java,Spring,Jetty,我有一个在服务器启动时启动的后端进程。完成此过程后,我会向用户发送电子邮件。我需要访问应用程序端口,以便构造在同一实例上运行的web报表的完整URL。是否有方法在不访问请求对象的情况下获取端口 我需要访问应用程序端口,以便构造在同一实例上运行的web报表的完整URL。是否有方法在不访问请求对象的情况下获取端口 为什么不将其作为配置文件中的属性存储到后端进程?如果只需要在电子邮件中嵌入的端口(甚至是一个不变的网站URL片段),代码就会变得简单得多 此外,与定期更改端口号相比,相关管理员有更好的事情

我有一个在服务器启动时启动的后端进程。完成此过程后,我会向用户发送电子邮件。我需要访问应用程序端口,以便构造在同一实例上运行的web报表的完整URL。是否有方法在不访问请求对象的情况下获取端口

我需要访问应用程序端口,以便构造在同一实例上运行的web报表的完整URL。是否有方法在不访问请求对象的情况下获取端口

为什么不将其作为配置文件中的属性存储到后端进程?如果只需要在电子邮件中嵌入的端口(甚至是一个不变的网站URL片段),代码就会变得简单得多

此外,与定期更改端口号相比,相关管理员有更好的事情要做

相关问题(但不完全相同)

  • 它们都提供了servlet容器看到的路径不必与最终用户看到的路径相同的原因。即使两者都是相同的,也不可能在没有

    • 正在读取服务器配置文件。在本例中,它将是
      $JETTY\u HOME/etc/JETTY.xml
      ,元素中包含必要的信息
    • 获取对
      ServletRequest
      对象的引用,这可能不是此问题的有效答案

    如果应用程序中至少有一个http请求调用,则可以从中获取端口:

    int portNumber = request.getServerPort();
    
    也许你的启动脚本可以做这样的调用


    更多详细信息:

    这是一个在Jetty上运行的spring应用程序。问题是端口号确实发生了变化。因为这是为不同的spring应用程序实例运行的通用服务。所以我事先不知道港口。恐怕你的评论没有任何意义。如果您有多个应用程序在与不同端口关联的不同容器上运行,那么您需要找到一种将端口号与报告关联的方法;重点仍然是,此信息应该是可配置的。此外,由于NAT解决方案或反向代理的存在,从请求URL派生端口的任何尝试都将失败。端口在配置文件中定义。现在我从这个文件中获取它并在一个变量中进行设置。不完全是这样。但是一个类似的配置文件被传递到jetty参数中。