2010-12-06 26 views
11

如何在tomcat中部署多個java web應用程序,它將運行在不同的端口上? - 如何進行設置,以便不同的Web應用程序可以在不同的端口上運行 - 爲實現此目的需要做什麼?如何在tomcat中部署多個web應用程序,並運行在不同的端口上?

+0

爲什麼你需要不同的端口? – JoseK 2010-12-07 05:03:52

+0

http://stackoverflow.com/questions/8823290/how-to-run-different-apps-on-single-tomcat-instance-behind-different-ports – sab 2013-08-15 14:04:30

回答

4

你最好有多個tomcat安裝。這會更容易。

我想你可以在server.xml中註冊多個<Connector> s,然後過濾掉上下文,但這很乏味,聽起來不對。

+2

我想知道如何在一臺tomcat服務器上做到這一點..我不想多個服務器。 – LetsSyncUp 2010-12-06 13:32:08

6

您將需要在server.xml文件(tomcat_home/conf)中設置另一個服務。如果你還沒有改變你的服務器上的文件,你應該已經有一個叫卡特琳娜(我使用Tomcat 5.5,你可能有一些根據的版本略有不同)

<Service name="Dev2"> 
    <Connector port="8090" maxHttpHeaderSize="8192" 
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
       enableLookups="false" redirectPort="8443" acceptCount="100" 
       connectionTimeout="20000" disableUploadTimeout="true" /> 
    <Connector port="8092" 
       enableLookups="false" redirectPort="9443" protocol="AJP/1.3" /> 

    <Engine name="Dev2" defaultHost="MyDev"> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 
     <Host name="MyDev" appBase="webapps" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
     </Host> 
    </Engine> 
</Service> 

注意,名稱從卡塔利娜改爲DEV2,和本地主機到MyDev。將這些更改爲適合您應用程序的任何內容。端口和連接器也發生了變化。 一旦新服務安裝完畢,您就需要將應用程序部署到適當的服務/端口。通過使用在XML文件中做到這一點(見Virtual Hosting

Tomcat_Home/conf/Catalina/localhost/ 

Tomcat_Home/conf/Dev2/MyDev/ 

爲各個端口,您設置

此時你需要做的就是添加還有幾個文件將服務指向您的應用程序。 爲例,Tomcat_Home/conf/Dev2/MyDev/下,我有一個名爲Another.xml文件,該文件包含以下

<Context path="/" docBase="C:/to_delete" debug="10" crossContext="false"> 
</Context> 

現在,我可以使用Web地址http://127.0.0.1:8090/Another 訪問新的應用程序。如果我試圖用我的默認端口訪問此8080,我得到一個錯誤,因爲應用程序沒有被部署到給定的端口。

有關此設置的一些注意事項。如果您使用VirtualVM查看應用程序,您會注意到它們共享相同的進程ID。因此你必須特別小心你的資源。他們將使用相同的堆空間,並且所有線程將顯示在同一個列表中。如果您登錄了應用程序(例如Log4j),請確保您可以選擇顯示哪個線程正在進行此項工作,因爲可能很難說出其他哪個端口/應用程序。

正如Bozho已經指出的那樣,簡單地運行Tomcat的兩個實例而不是一個服務器監聽多個端口可能會更容易。

4

對不起,這是答案。在這個問題上,我看不到任何評論能力。 Mabye這個問題太老了,或者我的聲譽不夠高。

但是,我自己一直在研究同樣的問題。您將不得不更多地瞭解Tomcat,http服務器和Java系統環境如何使用相同的實例。我已經讀過它也非常慢。

最好的選擇是單獨的實例。有兩個非常簡單的方法來做到這一點: A/Ubuntu的,你可以使用SVN得到這個腳本: http://ubuntuforums.org/showthread.php?t=1211517 http://code.google.com/p/tomcat-linux/

B /你自己的,每個用戶的情況。 http://brian.pontarelli.com/2007/09/17/multiple-tomcat-instances-on-ubuntu/

上一次是爲Tomcat 5.5編寫的,但可能是適應到Tomcat 6

然而,對於最新的Tomcat在Linux上多個JVM實例最好的方向是在這裏: http://www.puschitz.com/InstallingTomcat.html

2

您可以在apache中使用mod-proxy將自定義端口重定向到標準端口。

mod proxy

相關問題