0

我有一个在 Jetty 服务器下运行的 Apache Tapestry 应用程序。因此,可以在请求对象的请求期间获取正在运行的 HTTP 服务器的端口号。但我需要找出程序启动期间服务器正在运行的端口号(在 AppModule 中的某个位置)。有没有办法以编程方式获取这些信息?我试图在服务中访问 @Symbol(SymbolConstants.HOSTPORT) String hostPort 但这不起作用。它只是给出 0。显然 0 意味着我应该从请求中查找端口号。

我需要它的原因是因为我需要将此信息写入其他服务可以访问的某个数据库中,以便他们知道该应用程序正在运行的端口/IP地址并可以调用它。

4

1 回答 1

0

我很确定您不能以编程方式从javax.servlet包中的任何内容确定 servlet 容器的端口,除了ServletRequestie getLocalPort()

Tapestry 不会为您的应用程序容器提供任何额外的句柄,而这些句柄尚未包含在 servlet 规范中。

因此,您需要等待第一个请求进入并存储使用的端口(推荐),或复制您的端口配置 - 一次在容器的配置(jetty)中,一次在应用程序的某个位置(AppModule、web.xml 或其他配置文件)。

第三个选项(强烈不推荐)是从 Tapestry 应用程序中查找容器的配置。请不要这样做。

于 2012-11-22T11:09:10.357 回答