当前位置: 首页 > 面试题库 >

在没有请求的情况下从tomcat获取服务器端口号

商弘义
2023-03-14
问题内容

是否有可用的Tomcat API或配置可以告诉应用程序(可能在启动时)在没有请求的情况下在哪个端口上运行?

想象一个场景,其中有两个Web应用程序在同一个Tomcat中运行,并且其中一个需要从另一个中调用Web服务。我们不希望该请求离开Tomcat(如果您使用Apache服务器名称或绝对URL,则该请求将发出并再次返回,并且可以转到任何实例)并再次进入。为此,我知道机器名称,但无法获取端口号。我知道我可以对这些信息进行硬编码,但是我不想这样做,因为我希望我的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());
                }
            }


        }


 类似资料:
  • 我正在尝试从FireBase获取所有用户的名称,该名称包含给定的字符串。例如,如果我有这些用户: 我希望所有用户的名称都包含'D',因此我希望得到这样的结果: 这是我的Firebase目前的结构: 2)现在我不想有服务器端代码,什么是实现自定义索引的好的和有效的方法? 谢谢

  • 我有一个用原型范围定义的组件。我想在我的服务类中使用该组件。我希望Spring每次我呼吁它时都能为我提供一个新的豆子实例。 组件类别: 服务等级: 通过使用这个配置,我在我的prototypeBeans ArrayList中获得了相同的ProtoTypeBean实例。问题是,当我每次在foreach循环中调用它时,我如何让Spring理解给我一个prototypeBean的新实例?我发现我可以使用

  • 我有一个Spring boot项目,它有使用kafka进行日志记录的依赖项。我无法摆脱所述依赖项,因为我的逻辑需要来自该依赖项的代码 我已尝试禁用自动配置 我尝试通过bean配置将missingTopicsFatal设置为false 但很明显,设置已经是假的,因为我的应用程序运行时没有失败,只是tomcat不想打开侦听端口 应用程序启动,但spring拒绝打开侦听端口,并继续使用错误进行循环 在本

  • 有没有办法在Spring MVC中获取当前会话,但不是通过请求。通常,我们所做的是在操作/控制器类方法中获取请求。从这个请求中,我们逐个请求获得会话。getSession()。但是,有没有办法在没有此请求对象的情况下获取此会话? 我的动机是,在一个实用程序类中,我需要访问会话中设置的值,而这个实用程序类方法是从控制器类的50多个方法中访问的。如果我必须从请求中获得会话,那么我需要更改所有这50个位

  • 问题内容: 我需要将JSON(我可以对其进行字符串化)发送到服务器,并在用户端检索得到的JSON,而无需使用JQuery。 如果我应该使用GET,如何将JSON作为参数传递?是否有太长的风险? 如果我应该使用POST,如何在GET中设置功能的等效项? 还是应该使用其他方法? 备注 这个问题不是关于发送简单的AJAX。不应将其作为重复项关闭。 问题答案: 使用POST方法以JSON格式发送和接收数据

  • 问题内容: 使用以下选项启动Java应用程序时: Java使用临时端口,这对于避免冲突非常有用。 是否可以从应用程序内部以编程方式获取实际端口(或连接URL)? 问题答案: 这将打印如下网址