一個tomcat上部署多個項目,並通過不同端口號訪問不同的項目


原文:http://www.cnblogs.com/kismetv/p/7228274.html#title3-1

現在以部署兩個項目為例:

 

第一步:修改tomcat下的server.xml文件

配置service 節點,個人認為有幾個項目,就相應的配置幾個service 節點;


配置了兩個端口號:分別為9999和8878

 

第二步:先依照此配置文件配置,完成后在tomcat根目錄下復制文件夾webapps,粘貼重命名為webapps1,webapps2,如下圖:此文件夾就是分別用來部署項目的。

3、如何配置多個服務

通過在Server中配置多個Service服務,可以實現通過不同的端口號來訪問同一台機器上部署的不同Web應用。

在server.xml中配置多服務的方法非常簡單,分為以下幾步:

(1)復制<Service>元素,放在當前<Service>后面。

(2)修改端口號:根據需要監聽的端口號修改<Connector>元素的port屬性;必須確保該端口沒有被其他進程占用,否則Tomcat啟動時會報錯,而無法通過該端口訪問Web應用。

以Win7為例,可以用如下方法找出某個端口是否被其他進程占用:netstat -aon|findstr "8081"發現8081端口被PID為2064的進程占用,tasklist |findstr "2064"發現該進程為FrameworkService.exe(這是McAfee殺毒軟件的進程)。

(3)修改Service和Engine的name屬性

(4)修改Host的appBase屬性(如webapps2)

(5)Web應用仍然使用自動部署

(6)將要部署的Web應用(WAR包或應用目錄)拷貝到新的appBase下。

以第一部分的server.xml為例,多個Service的配置如下:

復制代碼
 1 <?xml version='1.0' encoding='utf-8'?>
 2 <Server port="8005" shutdown="SHUTDOWN">
 3   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 4   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 5   <Listener className="org.apache.catalina.core.JasperListener" />
 6   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 7   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 8   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 9 
10   <GlobalNamingResources>
11     <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
12   </GlobalNamingResources>
13 
14   <Service name="Catalina">
15     <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
16     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
17     <Engine name="Catalina" defaultHost="localhost">
18       <Realm className="org.apache.catalina.realm.LockOutRealm">
19         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
20                resourceName="UserDatabase"/>
21       </Realm>
22 
23       <Host name="localhost"  appBase="/opt/project/webapps" unpackWARs="true" autoDeploy="true">
24         <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" />
25       </Host>
26     </Engine>
27   </Service>
28 
29   <Service name="Catalina2">
30     <Connector port="8084" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
31     <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
32     <Engine name="Catalina2" defaultHost="localhost">
33       <Realm className="org.apache.catalina.realm.LockOutRealm">
34         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
35                resourceName="UserDatabase"/>
36       </Realm>
37 
38       <Host name="localhost"  appBase="/opt/project/webapps2" unpackWARs="true" autoDeploy="true">
39         <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" />
40       </Host>
41     </Engine>
42   </Service>
43 </Server>
復制代碼

再將原webapps下的docs目錄拷貝到webapps2中,則通過如下兩個接口都可以訪問docs應用:

http://localhost:8080/docs/

http://localhost:8084/docs/

 

當然你可以配置了多個 Service 元素。就需要修改Tomcat的內存參數,防止內存溢出。如果你是linux系統,修改 %TOMCAT_HOME%/bin/catalina.bat 
-Xms //初始堆大小 
-Xmx //最大堆大小 
-XX:PermSize //初始永久區大小 
-XX:MaxPermSize //最大永久區大小 
放到有效配置的第一行

set JAVA_OPTS=-server -Xincgc -Xms1024m -Xmx1024m -XX:MaxPermSize=256m

如果你是windows系統,去修改注冊表吧, 
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcat6.0\Parameters\Java 
右邊的 Options 里面一條配置占一行 前后不能有空格。 
然后重啟。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM