如何在同一臺電腦上同時執行兩個Tomcat(關於Invalid character found in method name.HTTP method names must be token.錯誤資訊)
今天在學習一個專案的時候需要用到Tomcat8,而我的Tomcat版本是7,因為Tomcat7用的久了比較習慣又不想解除安裝,所以打算兩個一起用,在網上查了同一臺電腦上可以執行兩個Tomcat後,就開始部署Tomcat8.
在看了一篇前輩的經驗後將Tomcat8的startup.bat檔案加了JDK的安裝路徑和Tomcat8所在路徑,又將需要修改的三個埠號修改後啟動Tomcat8出現瞭如下所示的錯誤:
Invalid character found in method name.HTTP method names must be token.
錯誤說明翻譯過來是這樣的:
方法名稱中發現無效字元。HTTP方法名稱必須是令牌。
又查了下API發現:
但是Tomcat8的服務是已經啟動的,在瀏覽器上輸入對應地址也會出現那隻貓,和正常啟動沒什麼區別,於是就抱著試試看的態度進行了一番修改。
以上說明應該是Tomcat8啟動時引數的傳遞發生了衝突或錯誤,在網上看了很多前輩的經驗和帖子之後經過幾番嘗試修改都沒有成功,此時啟動Tomcat7也可以正常啟動,二者已經可以同時執行,但是錯誤資訊還是存在,讓我這個輕微強迫症患者很難受。後來我轉念一想,Tomcat8是我現在需要用的,如果Tomcat8上面沒辦法亂動,那在Tomcat7上做做手腳怎麼樣,於是我打開了Tomcat7的conf目錄下的server.xml檔案,按照網上的教程修改了三處埠號,從檔案開始依次向後分別是:
<Server port="8005" shutdown="SHUTDOWN">
埠號可以隨意修改,最好是有規律的數字組合,因此我改成了“1111”;
<Server port="1111" shutdown="SHUTDOWN">
下一處是:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
大家很熟悉的8080,我改成了“1234”;
<Connector port="1234" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
最後一處是:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
我改成了“2222”.
<Connector port="2222" protocol="AJP/1.3" redirectPort="8443" />
如果修改之後再執行Tomcat報出嚴重的錯誤資訊,大多數是因為修改後的埠和其它應用程式的埠衝突,報錯資訊裡會有類似 port "****" in use 的資訊,將"****"修改後重啟Tomcat就可以了。
其它解決辦法留做日後解決時更新。