我有一个在Jetty服务器下运行的Apache tapestry应用程序。因此,可以在来自请求对象的请求期间获得正在运行的HTTP服务器的端口号。但我需要找出程序启动期间服务器运行的端口号(在AppModule中的某个地方)。有没有办法以编程方式获取此信息?我试图在服务中访问@Symbol(SymbolConstants.HOSTPORT)字符串hostPort,但这不起作用。它只是给出0.显然0意味着我应该从请求中查找端口号。
我需要它的原因是因为我需要在某些数据库中写入此信息,这些数据库可供其他服务访问,以便他们知道此应用程序运行的端口/ IP地址并可以调用它。
答案 0 :(得分:0)
我非常肯定您无法以编程方式从javax.servlet
包中的任何内容确定servlet容器的端口,ServletRequest
即getLocalPort()
除外。
Tapestry不会为servlet规范中尚未提供的应用程序容器提供任何额外的句柄。
因此,您需要等待第一个请求进入并存储使用的端口(推荐),或复制端口配置 - 一次在容器的配置(jetty)中,一次在应用程序的某个位置(AppModule,web。 xml或其他配置文件)。
第三个选项(强烈建议不要这样做)是从您的tapestry应用程序中查找容器的配置。请不要这样做。