1

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

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

4

3 回答 3

4

在 Tomcat 6.0 中,它应该类似于:

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

获得服务。之后你可以使用

Service.findConnectors

它返回一个最终具有该方法的连接器

Connector.getPort

有关详细信息,请参阅JavaDocs

于 2008-09-15T18:54:15.700 回答
0

为什么?

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

于 2008-09-15T18:59:16.780 回答
0

无论您要做什么-我都不会走tomcat特定的道路。

如果您确实需要定位不同的端口,请通过通常的配置方式将它们配置到您的 webapp - 例如指定值。你不会有任何自动发现,但它也不会在下一次更新的 tomcats 上中断。

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

于 2008-09-22T07:07:09.437 回答