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

Nar*_*dra 45 java port tomcat

我想部署一个tomcat服务器,以便它同时监听两个端口(两者都用于http协议).

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

有可能吗?如果可能的话,我们怎么能做到这一点?

Gui*_*lar 46

这很简单.您只需要查看conf/server.xml配置文件即可为所需的端口添加新连接器.例如,如果您有这样的连接器:

<Connector port="8080" 
           protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" 
           URIEncoding="UTF-8" />
Run Code Online (Sandbox Code Playgroud)

只需在配置文件中添加与上述相同的新连接器,但需要更改端口参数.就这样.重新启动,你就完成了.

  • @Narendra:您是否更改了参数"port"和"redirectPort"?你使用哪个tomcat版本? (3认同)

Mag*_*lex 21

对的,这是可能的.只需编辑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" />
Run Code Online (Sandbox Code Playgroud)

这将设置Tomcat以侦听端口80808081.

documenation状态:

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

  • redirectPort:如果此Connector支持非SSL请求,并且收到匹配<security-constraint>需要SSL传输的请求,则Catalina将自动将请求重定向到此处指定的端口号.

因此,根据您希望这种重定向的工作方式,更改redirectPort是可选的.


小智 17

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

示例如下,

<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>
Run Code Online (Sandbox Code Playgroud)

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