是否有可用的Tomcat API或配置可以告诉应用程序(可能在启动时)在没有请求的情况下在哪个端口上运行?
想象一个场景,其中有两个Web应用程序在同一个Tomcat中运行,并且其中一个需要从另一个中调用Web服务。我们不希望该请求离开Tomcat(如果您使用Apache服务器名称或绝对URL,则该请求将发出并再次返回,并且可以转到任何实例)并再次进入。为此,我知道机器名称,但无法获取端口号。我知道我可以对这些信息进行硬编码,但是我不想这样做,因为我希望我的war文件与应用服务器无关。
war
我知道,如果我们有HTTPServletRequest,就可以找到它
这仅适用于Tomcat 6,不适用于Tomcat 7
对于任何对我们如何解决此问题感兴趣的人,这里是模拟代码
Server server = ServerFactory.getServer(); Service[] services = server.findServices(); for (Service service : services) { for (Connector connector : service.findConnectors()) { ProtocolHandler protocolHandler = connector.getProtocolHandler(); if (protocolHandler instanceof Http11Protocol || protocolHandler instanceof Http11AprProtocol || protocolHandler instanceof Http11NioProtocol) { serverPort = connector.getPort(); System.out.println("HTTP Port: " + connector.getPort()); } } }