在 Tomcat 中,我的 servlet 如何确定配置了哪些连接器?

StackOverflow https://stackoverflow.com/questions/65530

  •  09-06-2019
  •  | 
  •  

在 Tomcat 5.5 中,server.xml 可以有许多连接器,通常只有 8080 端口,但对于我的应用程序,用户可以将其 servlet.xml 配置为也打开其他端口(例如 8081-8088)。我想让我的 servlet 弄清楚哪些套接字连接端口将是有效的(在 Servlet.init() 期间,tomcat 尚未启动连接器。)

我可以自己找到并解析 server.xml (grotty),我可以查看线程名称(在 tomcat 启动之后 - 但我怎么知道什么时候是这样做的好时机?)但我更喜欢一个可以在 servlet.init() 中执行并确定有效端口范围的解决方案。有任何想法吗?对于我的应用程序来说,可以将解决方案紧密绑定到 Tomcat 就可以了。

有帮助吗?

解决方案

在 Tomcat 6.0 中应该是这样的:

org.apache.catalina.ServerFactory.getServer().getServices 

获得服务。之后你可能会使用

Service.findConnectors

它返回一个 Connector,它最终具有该方法

Connector.getPort

请参阅 Java文档 了解详情。

其他提示

为什么?

如果您在页面生成期间需要图像或 css 文件 URL,那么有什么问题 ServletRequest.getLocalPort() 或者,更好的是, HttpServletRequest.getContextPath() 整个shebang?

无论你要做什么 - 我不会走雄猫特定的道路。

如果您确实需要找到不同的端口,请通过通常的配置方式将它们配置到您的 web 应用程序 - 例如指定值。你不会有任何自动发现,但它也不会在 Tomcats 下次更新时中断。

更具体地说,我想说我相信你问了错误的问题。例如。您有自己的要求,选择了一种解决方案并询问如何实施该解决方案。我相信如果您陈述您的第一手需求并寻求解决方案,您会得到更好的答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top