Tomcat不同端口启动多个应用

测试本地Tomcat配置多个Service组件在不同端口接受不同请求,原来的server.xml配置如下:





  
  
  
  
  
  
  
  

  
  
    
    
  

  
  

    
    


    
    
    
    
    
    

    
    


    

    
    

      
      

      
      
        
        
      

      

        
        

        
        

      
    
  

我们知道server.xml包含的组件包括Server、Service、Connector、Engine、Host、Context等。

其中Server是根元素,一个Tomcat对应一个Server。一个Service对应一个服务实例,它用来将Connector元素和Engine元素包装在一起接受客户端发送的请求,处理后生成响应。可以包含多个Service元素。一个Service可以包含多个Connector和一个Engine,其中的Connector作用是接收客户端发送的请求,生成Request和Response将请求交给Engine处理并返回响应。

Connector包含了接收请求的端口,请求的协议以及重定向的端口。常见的协议比如HTTP协议和AJP协议,AJP协议用于Tomcat和其他服务器直接进行通信,redirectPort用于如果只接受HTTPS协议而实际发送的请求却是HTTP协议,则将请求重定向到redirectPort指定的端口。

一个Service只包含一个Engine,它用于处理Connector接收的请求,name属性和Service的name属性一致,一个Engine可以包含多个Host。如果请求的主机地址在Engine的Host元素配置中没匹配到,就将请求交给defaultHost属性指定的主机。一个Engine必须包含一个defaultHost指定的Host元素配置。

一个Host元素相当于一个处理请求的虚拟主机,appBase属性指定了web应用部署的路径,unpackWARs指定了是否解压WAR包根据解压后的WAR包路径部署,autoDeploy指定是否自动部署,如果是自动部署,则更新部署的应用文件后,Tomcat会重新加载更新后的文件,所以一般使用自动部署,如果不使用自动部署可以在Host中配置Context。

现在新增一个Service元素,来将同一web应用部署在不同端口,接收客户端的请求:


    

    
    
      
        
      
      
        
        
      
    
  

需要修改Connector的端口号,注意不要冲突,然后启动Tomcat,出现下面的错误:

Exception in thread "main" 
四月 27, 2018 2:36:26 下午 org.apache.tomcat.util.digester.Digester startElement
严重: Begin event threw error
java.lang.OutOfMemoryError: PermGen space
四月 27, 2018 2:36:28 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory D:\Program Files\apache-tomcat-8.0.39\webapps2\manager
四月 27, 2018 2:36:28 下午 org.apache.tomcat.util.digester.Digester endElement
严重: End event threw error
java.lang.OutOfMemoryError: PermGen space
四月 27, 2018 2:36:29 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory D:\Program Files\apache-tomcat-8.0.39\webapps2\ROOT
四月 27, 2018 2:36:29 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory D:\Program Files\apache-tomcat-8.0.39\webapps2\ROOT has finished in 18 ms
四月 27, 2018 2:36:29 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory D:\Program Files\apache-tomcat-8.0.39\webapps2\webstandard
Exception in thread "Timer-1" 
四月 27, 2018 2:36:41 下午 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor run
严重: Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
java.lang.OutOfMemoryError: PermGen space

从错误日志可以看出是永久代内存溢出,可以通过在MyEclipse的Window->Preferences->MyEclipse->Servers->启动应用的Tomcat->JDK在Optional Java VM arguments中手动配置虚拟机内存参数:

-XX:MaxPermSize=256M -XX:MaxPermSize=512M

如果任然出现错误,可以继续增加内存大小。

你可能感兴趣的:(Java)