在Tomcat 5.5中,server.xml可以有许多连接器,通常端口只有8080,但对于我的应用程序,用户可能会将其servlet.xml配置为打开其他端口(例如8081-8088)。我希望我的servlet能够确定哪些套接字连接端口将是vaild(在Servlet.init()期间,tomcat还没有启动连接器。)
我可以自己找到并解析server.xml(grotty),我可以查看线程名称(在tomcat启动之后 - 但我怎么知道什么时候这么做呢?)但我更喜欢可以在我的servlet.init()中执行的解决方案,并确定有效的端口范围。有任何想法吗?对于我的应用程序,可以将解决方案紧密绑定到Tomcat上。
答案 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。
更具体地说,我会说我相信你提出了错误的问题。例如。您有自己的要求,选择了一个解决方案,并询问如何实施此解决方案。如果你说出你的第一手要求并要求解决方案,我相信你会得到更好的答案。