2008-09-15 51 views
1

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

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

回答

4

在Tomcat中6.0应该是这样的:

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

得到服务。之后,你可以使用

Service.findConnectors 

它返回终于有了方法

Connector.getPort 

JavaDocs对细节的连接器。

+0

Humm。一个servlet可以访问org.apache.catalina.ServerFactory吗?我虽然会在服务器的类加载器中,并且可以访问Servlet。 – 2008-09-15 19:02:32

+0

供参考:我碰巧在Tomcat 5.5.17 – 2008-10-10 17:52:07

0

无论你打算做什么 - 我不会走下tomcat的特定道路。

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

更具体地说,我会说我相信你问了一个错误的问题。例如。你有你的要求,选择了一个解决方案,并要求如何实施这个解决方案。我相信如果你表达了你的第一手要求并为此寻求解决方案,你会得到更好的答案。

相关问题