Java 如何在apache tapestry中的应用程序启动时查找端口号
我有一个Apache tapestry应用程序,它在Jetty服务器下运行。因此,可以在请求对象的请求期间获取正在运行的HTTP服务器的端口号。但我需要找出程序启动期间服务器运行的端口号(在AppModule中的某个位置)。是否有某种方法可以通过编程方式获取此信息?我试图在服务中访问@Symbol(symbolstants.HOSTPORT)字符串HOSTPORT,但这不起作用。它只给出0。显然,0意味着我应该从请求中查找端口号Java 如何在apache tapestry中的应用程序启动时查找端口号,java,jetty,tapestry,Java,Jetty,Tapestry,我有一个Apache tapestry应用程序,它在Jetty服务器下运行。因此,可以在请求对象的请求期间获取正在运行的HTTP服务器的端口号。但我需要找出程序启动期间服务器运行的端口号(在AppModule中的某个位置)。是否有某种方法可以通过编程方式获取此信息?我试图在服务中访问@Symbol(symbolstants.HOSTPORT)字符串HOSTPORT,但这不起作用。它只给出0。显然,0意味着我应该从请求中查找端口号 我之所以需要它,是因为我需要在其他服务可以访问的某些数据库中写入此
我之所以需要它,是因为我需要在其他服务可以访问的某些数据库中写入此信息,以便它们知道此应用程序运行的端口/ip地址,并可以调用它。我非常确定,您无法通过编程从数据库中的任何内容确定servlet容器的端口
javax.servlet
包,除了ServletRequest
iegetLocalPort()
Tapestry不为servlet规范中尚未包含的应用程序容器提供任何额外句柄
因此,您需要等待第一个请求进入并存储所使用的端口(推荐),或者复制您的端口配置—一次在容器的配置(jetty)中,一次在应用程序的某处(AppModule、web.xml或其他配置文件)
第三个选项(强烈不推荐)是从tapestry应用程序中查找容器的配置。请不要这样做。请参阅tomcat的答案。。不确定你是否能为jetty做类似的事情?