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

时间:2008-09-15 18:40:57

标签: tomcat

在Tomcat 5.5中,server.xml可以有许多连接器,通常端口只有8080,但对于我的应用程序,用户可能会将其servlet.xml配置为打开其他端口(例如8081-8088)。我希望我的servlet能够确定哪些套接字连接端口将是vaild(在Servlet.init()期间,tomcat还没有启动连接器。)

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

3 个答案:

答案 0 :(得分:4)

在Tomcat 6.0中应该是这样的:

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

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

Service.findConnectors

返回一个最终具有方法

的连接器
Connector.getPort

有关详细信息,请参阅JavaDocs

答案 1 :(得分:0)

为什么?

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

答案 2 :(得分:0)

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

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

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