2016-08-22 35 views
0

我有2個Tomcat服務器在不同的目錄D和E.我想同時啓動這些服務器。如何同時從不同目錄正確啓動2個Tomcat服務器?

我做了什麼:

一號方法:

1)通過閱讀,我發現改變端口號,我做的tomcat的不同位點。

2)在我的Catalina_Home文件夾中,我的路徑值爲CATALINA_HOME = D:\ tomcat \ apache-tomcat-7.0.70。

當我從驅動器啓動Tomcat EI得到一個錯誤的驅動器E的Tomcat的是

INFO: Server startup in 105794 ms 
Aug 22, 2016 10:37:29 AM org.apache.catalina.core.StandardServer await 
SEVERE: StandardServer.await: create[localhost:8005]: 
java.net.BindException: Address already in use: JVM_Bind 
    at java.net.DualStackPlainSocketImpl.bind0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source) 
    at java.net.PlainSocketImpl.bind(Unknown Source) 
    at java.net.ServerSocket.bind(Unknown Source) 
    at java.net.ServerSocket.<init>(Unknown Source) 
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:444) 
    at org.apache.catalina.startup.Catalina.await(Catalina.java:781) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:727) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428) 

Aug 22, 2016 10:37:29 AM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["http-apr-8080"] 
Aug 22, 2016 10:37:29 AM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["ajp-apr-8009"] 
Aug 22, 2016 10:37:29 AM org.apache.catalina.core.StandardService stopInternal 
INFO: Stopping service Catalina 
Aug 22, 2016 10:37:29 AM org.apache.catalina.loader.WebappClassLoaderBase clear ReferencesThreads 
SEVERE: The web application [/Subs_Engine] appears to have started a thread name 
d [Abandoned connection cleanup thread] but has failed to stop it. This is very 
likely to create a memory 

第二個方法:

至於說我嘗試了以下事情cmdPrompt在E驅動,定義的tomcat

@Edit enter image description here 我也得到了以下提示說

enter image description here

第三屆方法:

一)端口號我verified.They都是在服務器的每個目錄不同。

b)我打開了startup.bat,並用CATALINA_HOME_E替換了CATALINA_HOME。

c)我已經將系統和用戶定義的環境變量中的CATALINA_HOME_E設置爲E:\ apache-tomcat-7.0.70。

而在系統變量中,我添加的路徑變量是%CATALINA_HOME_E%\ lib;

現在tomcat的開始了,但我得到的錯誤:

INFO: Server startup in 105794 ms 
Aug 22, 2016 10:37:29 AM org.apache.catalina.core.StandardServer await 
SEVERE: StandardServer.await: create[localhost:8005]: 
java.net.BindException: Address already in use: JVM_Bind 
    at java.net.DualStackPlainSocketImpl.bind0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source) 
    at java.net.PlainSocketImpl.bind(Unknown Source) 
    at java.net.ServerSocket.bind(Unknown Source) 
    at java.net.ServerSocket.<init>(Unknown Source) 
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:444) 
    at org.apache.catalina.startup.Catalina.await(Catalina.java:781) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:727) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428) 

我看到這個錯誤的原因是Tomcat的我是從E盤開始從d驅動器啓動。 我看到了端口上運行的Tomcat是7080的HTTP使用> netstat -ano | find「:7080」

我沒有找到任何正在運行的東西。 所以,我配置了錯誤的路徑設置。

Am I doing it right for this approach?

Can anyone guide me why how to correct this?

+0

堆棧跟蹤中提到的港口衝突。你可以檢查8085是否可用端口?是路徑中的Tomcat啓動服務器腳本?如果是的話,哪一個被拿起?可能是在啓動Tomcat的啓動服務器的命令行中設置路徑並嘗試再次執行以避免衝突是一個好主意? –

+1

你必須改變配置,使每個tomcat監聽不同的端口。不在線的http,但暴露在TCP端口上的所有其他服務。 –

+0

@RamachandranGA 8085或8080是一個可用的端口? – user6389648

回答

1

檢查配置文件server.xml

<Connector connectionTimeout="20000" port="9090" protocol="HTTP/1.1" redirectPort="8443"/>

<Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/>

定義的端口應當爲每個Tomcat實例不同。

+0

兩者都不同。 – user6389648

+1

你可以運行netstat -atp並檢查哪個進程綁定到端口8005? –

2

下面是你應該嘗試

一)設置不同的接口,用於在Tomcat實例。這通過編輯server.xml並確保沒有端口衝突來完成。在端口選擇中,確保沒有監聽的其他應用程序(不同的應用程序可以說在8085上收聽 - 例如非tomcat)

b)不要爲startServer.bat設置全局路徑,或者同時設置命令行或用戶配置文件中的startServer.bat。每次在命令行上啓動startServer時,請確保您隨時隨地設置路徑。既然你提到D和E,我在這裏假設窗戶。

在命令行上

一個)CD ... b)設置CATALINA_HOME = d:... \ TomcatOnD \ c)設置PATH =%PATH%; d:... \ TomcatOnD \倉 d)startServer.bat

做同樣的事情,與E上tomcat的不同路徑:\

看到,如果服務器開機。希望他們應該:)

+0

我已編輯帖子。 – user6389648

+0

請注意,catalina_home並不指向bin目錄,而是指向安裝的頂層文件夾,我認爲它必須是E:\ apache-tomcat-7.0.70 \ bin> set CATALINA_HOME = E:\ apache-tomcat-7.0 0.70 \; –

+0

我已經編輯過這個帖子了。 – user6389648

1

你所要做的就是

  1. 使用不同的端口爲第二臺服務器
  2. 使用不同的卡塔利娜的第二個服務器

我將離開第一的tomcat D: 我們將改變的是E:

1-打開這是安裝在E中的tomcat的conf/server.xml中: 找到名爲Connector的端口更改爲任何未使用的端口的端口配置元素(標籤),EX 9090

<Connector port="9090" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 

確保一個在d:不也使用相同的端口。

2-打開安裝在E上的服務器的bin/startup.bat,並將所有CATALINA_HOME更換爲CATALINA_HOME_E如果需要,可以使用不同的名稱。

3-添加新的制度環境關鍵CATALINA_HOME_E使它指向E:\apache-tomcat-7.0.70\bin

,現在你可以使用和D:\apache-tomcat-7.0.70\bin

位於E:\apache-tomcat-7.0.70\bin的startup.bat文件,兩個服務器我已經開始使用這種方法幾年前在窗口,儘管它最近沒有測試過。但我認爲它仍然可以工作

不添加E:\ Apache的Tomcat的7.0.70 \ BIN或d:\ Apache的Tomcat的7.0.70 \ bin添加到PATH當你這樣做的,如果您在cmd中鍵入startup,它可能會啓動兩次相同的實例。而不是瀏覽到該文件夾​​並啓動bat文件

,如果你需要添加到您需要重命名啓動文件PATH,所以他們這樣結束 startupd.batstartupe.bat所以當你使用命令來啓動服務器將不發生混合。

編輯: 按你的這種方法 tomcat的反饋使用-i認爲 - 這對一些內部信令和通信連接,可以發送關機信號給服務器? 它默認 您需要設置在E一個新的端口是端口8005:tomcat的,它是在server.xml中的conf文件 標籤SERVER <Server port="8005" shutdown="SHUTDOWN"設置一個新的端口,可8006

+0

@ user6389648您是否嘗試過這種方法? – Yazan

+0

@ user6389648對不起,沒有看到,我已經更新了我的答案,希望這能解決問題。檢查下面編輯:部分 – Yazan

+0

ShutDown,AJP和HTTP端口在兩個目錄中都是不同的.Styll Tomcat在驅動器e中定義的是使用相同的端口8005,這是驅動器d中的驅動器tomcat的關閉端口。 – user6389648

相關問題