【发布时间】:2011-09-19 04:39:02
【问题描述】:
我有一个在服务器启动时启动的后端进程。完成此过程后,我会向用户发送一封电子邮件。我需要访问应用程序端口才能构建在同一实例上运行的 Web 报告的完整 URL。有没有办法在不访问请求对象的情况下获取端口?
【问题讨论】:
-
它是一个运行在 Jetty 上的 spring 应用程序。
我有一个在服务器启动时启动的后端进程。完成此过程后,我会向用户发送一封电子邮件。我需要访问应用程序端口才能构建在同一实例上运行的 Web 报告的完整 URL。有没有办法在不访问请求对象的情况下获取端口?
【问题讨论】:
如果您的应用程序中至少有一个 http 请求调用,您可以从中获取端口:
int portNumber = request.getServerPort();
也许你的启动脚本可以进行这样的调用。
【讨论】:
我需要访问应用程序端口才能构建在同一实例上运行的 Web 报告的完整 URL。有没有办法在不访问请求对象的情况下获取端口?
为什么不将此作为属性存储在后端进程的配置文件中?如果只需要需要嵌入到电子邮件中的端口(甚至是一个不变的网站 URL 片段),那么代码将会变得更加简单。
此外,与定期更改端口号相比,有问题的管理员要做的事情更好。
相关问题(但不完全相同)
它们都提供了原因,为什么 servlet 容器看到的路径不必与最终用户看到的路径相同。即使两者相同,也没有办法,没有人可以访问这些信息
$JETTY_HOME/etc/jetty.xml,它在 Connectors 元素中包含必要的信息。ServletRequest 对象的引用,这可能不是此问题的有效答案。【讨论】: