当前位置: 首页 > 知识库问答 >
问题:

在两个不同的端口上运行Tomcat服务器

谢飞舟
2023-03-14

我想部署一个tomcat服务器,以便它同时侦听两个端口(都用于超文本传输协议)。

为了确保您正确理解这个需求,我们只有一个服务器实例,但希望侦听HTTP协议的两个端口。例如,任何人都可以使用端口号7080和8080访问部署在我的服务器中的应用程序

有可能做到吗?如果可能,我们如何实现这一点?

共有3个答案

施敏达
2023-03-14

您可以在/conf/server中定义2个不同的服务。xml。

示例如下:,

<Service name="Catalina_2">
    <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
    <Engine name="Catalina_2" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps_2" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>


  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>

注意:您可能需要增加tomcat堆大小。

诸经略
2023-03-14

是的,这是可能的。只需像这样编辑server.xml(位于名为conf的文件夹中):

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8444" />

这将设置Tomcat同时侦听端口8080和8081。

文件规定:

>

  • port:此连接器将在其上创建服务器套接字并等待传入连接的TCP端口号。您的操作系统将只允许一个服务器应用程序监听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅在嵌入式和测试应用程序中有用。

    重定向端口(redirectPort):如果此连接器支持非SSL请求,并且接收到匹配的请求

    因此,更改重定向端口是可选的,这取决于您希望这种重定向的工作方式。

  • 岳晟
    2023-03-14

    很简单,你只需要看一看conf/server.xml配置文件,就可以为你想要的端口添加一个新的连接器。例如,如果你有一个这样的连接器:

    <Connector port="8080" 
               protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               URIEncoding="UTF-8" />
    

    只需在配置文件中添加一个与上述相同的新连接器,但更改端口参数。仅此而已。重新启动,您就完成了。

     类似资料:
    • 问题内容: 我正在使用使用node_redis的kue,但是我已经在会话中使用了,所以我想在特定端口上创建一个服务器,说默认值,然后在port上侦听。 我将如何做到这一点?我发现这篇文章讨论的是类似的内容,但是我并不是真的想要创建一个初始化脚本来执行此操作。 问题答案: 启动redis-server并为“ port”提供一个不同的参数,可以在命令行中完成: 例如,您也可以这样做,以便在启动时进行。

    • 我有一个监听两个不同端口的TCP服务器。我创建了两个不同的套接字,一个在端口8888上,一个在端口6634上。我监听这些端口,然后我在FD_SET中添加两个套接字,并将它们传递给Select()函数...当套接字准备好读取时,我检查FD_ISSET,看看哪个端口上有消息要读取。 不管怎样,当我连接到8888端口时,构思是成功的,我可以向服务器发送和接收。。。当我在客户端ctrl c时,选择函数再次

    • 使用8080/8005等命令删除在任何端口、Windows上运行的tomcat服务

    • 我正在尝试调试应用程序的流程。因此在这个过程中,我需要调试两个运行在两个不同tomcat服务器上的应用程序(其中一个应用程序中的方法调用不同应用程序的另一个方法)。我如何在eclipse中实现这一点(可能吗)? 注意:这两个应用程序都在同一个eclipse实例中,没有任何调试配置。

    • 我使用的是Tomcat服务器V7.0。我需要在同一台机器上同时运行两个Tomcat服务器。在运行第一个Tomcat服务器并尝试运行第二个Tomcat服务器后,出现了这个错误。 有解决办法吗? 谢谢你。

    • 当我在 2 台 Debian 服务器上运行 Docker 雄猫管理器时,我有以下 2 个显示器: Tomcat1:https://i.stack.imgur.com/kucJQ.png Tomcat2:https://i.stack.imgur.com/ygOCh.png Tomcat状态内存池以不同的名称列出,如“PS 两个容器以相同的方式运行: 使用相同的参数 xml 文件: 和 两台服务器的