1. 程式人生 > >Tomcat| Tomcat多開配置(端口占用異常分析)

Tomcat| Tomcat多開配置(端口占用異常分析)

前言

新建執行指令碼/run.sh:

#! /bin/bash

#設定環境變數CATALINA_HOME
export CATALINA_HOME=./

#設定環境變數JRE_HOME(如果在全域性的環境變數中設定過可以不用設定)
#export JRE_HOME=/root/jdk1.8.0

#啟動Tomcat
./bin/catalina.sh run

多開原理分析

修改<TomcatInstallDir>/conf/server.xml配置檔案,使得每個Tomcat都使用自己的埠

端口占用情景分析

測試前置條件: 已經正常運行了一個採用預設配置的Tomcat,然後採用同樣的Tomcat拷貝繼續執行

1.AJP連線端口占用(預設8009)

18-Jul-2018 10:41:12.500 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[AJP/1.3-8009]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
    at org.apache.catalina.util.LifecycleBase
.init(LifecycleBase.java:112) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:549) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875) at org.apache.catalina
.util.LifecycleBase.init(LifecycleBase.java:107) at org.apache.catalina.startup.Catalina.load(Catalina.java:632) at org.apache.catalina.startup.Catalina.load(Catalina.java:655) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492) Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:995) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) ... 12 more Caused by: java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1086) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:268) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581) at org.apache.catalina.connector.Connector.initInternal(Connector.java:993) ... 13 more

由異常資訊可以知道8009埠被佔用.因為在server.xml中8009埠為AJP連線埠

115     <!-- Define an AJP 1.3 Connector on port 8009 -->
116     <Connector port="8479" protocol="AJP/1.3" redirectPort="8443" />

解決辦法: 修改8009埠為非使用埠,比如:4779

2.Tomcat的關閉端口占用(預設8005)

18-Jul-2018 10:57:18.325 SEVERE [main] org.apache.catalina.core.StandardServer.await StandardServer.await: create[localhost:8005]: 
 java.net.BindException: Address already in use (Bind failed)
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:440)
    at org.apache.catalina.startup.Catalina.await(Catalina.java:769)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:715)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)

檢視配置可以知道是8005埠被佔用.因為在server.xml中8005埠為Tomcat的關閉埠.

 22 <Server port="8005" shutdown="SHUTDOWN">
      ...
167 </Server>

解決辦法: 修改8005埠為非使用埠,比如:4705

3.HTTP訪問端口占用(預設8080)

18-Jul-2018 11:25:40.277 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:549)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:632)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:655)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:995)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    ... 12 more
Caused by: java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1086)
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:268)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
    at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:68)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
    ... 13 more

由異常資訊可以知道8080埠被佔用.因為在server.xml中8080埠為HTTP訪問埠

 62     <!-- A "Connector" represents an endpoint by which requests are received
 63          and responses are returned. Documentation at :
 64          Java HTTP Connector: /docs/config/http.html
 65          Java AJP  Connector: /docs/config/ajp.html
 66          APR (HTTP/AJP) Connector: /docs/apr.html
 67          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
 68     -->
 69     <Connector port="8080" protocol="HTTP/1.1"
 70                connectionTimeout="20000"
 71                redirectPort="8443" />

解決辦法: 修改8080埠為非使用埠,比如:4780

總結

修改<TomcatInstallDir>/conf/server.xml配置檔案中的3個埠為非使用埠既可:AJP連線埠,Tomcat關閉埠,HTTP訪問埠
注意: 更改設定後出現啟動Tomcat時卡住,請參考Tomcat| Tomcat啟動卡住(Deploying web application directory …)解決.

相關推薦

Tomcat| Tomcat配置(異常分析)

前言 新建執行指令碼/run.sh: #! /bin/bash #設定環境變數CATALINA_HOME export CATALINA_HOME=./ #設定環境變數JRE_HOME(如果在全域性的環境變數中設定過可以不用設定) #e

80異常解決方法java.net.BindException: Address already in use: JVM_Bind:80(或8080)

pid 異常解決 exc == protocol nbsp catalina int tcp 1:Tomcat(或其他Web容器)啟動時控制臺報錯如下示: 2007-8-2 15:20:43 org.apache.coyote.http11.Http11Protocol

Tomcat 配置http請求自動轉為https請求並解決80問題

第一步.配置Tomcat的https請求,我的這篇部落格記錄了一下相關操作:https://blog.csdn.net/LJX_ahut/article/details/82153895   第二步 修改預設埠 由於http協議的預設埠是80(Tomcat預設配置

tomcat 起來 需要netstat命令埠號佔用並windows命令強制結束程序

目標:在Windows環境下,用netstat命令檢視某個埠號是否佔用,為哪個程序所佔用. 操作:操作分為兩步:(1)檢視該埠被那個PID所佔用;方法一:有針對性的檢視埠,使用命令 Netstat –ano|findstr “<埠號>”,如圖,最後一列為PID。圖中的埠號為8

MAC下tomcat伺服器配置問題(包含Eclipse

配置tomact伺服器時候可能會出現以下問題, HTTP Status 404 – Not Found 解決方案如下: 1.在tomcat官網進行下載 2.在終端進入到該tomcat資料夾 3.啟動該伺服器需要做的是啟動該配置檔案中的start

tomcat排查

日常開發中,常常有埠被佔用的情況發生,比如我們java常用的tomcat,它預設的埠是8080,有時騰訊的軟體也會佔用這個埠,當我們不知道是哪個軟體佔用的情況下,我們可以通過以下方式進行排查。 開啟cmd,輸入netstat -ano,會出現如下 我們可以根據圖中選中列找到我們所需

ubuntu 下 tomcat 而無法啟動

由於tomcat異常關閉,再啟動就出現端口占用的情況,如下: ERROR [Http11Protocol] Error starting endpointjava.net.BindException: Address already in use:80at org.apac

關於Tomcat(8005,8080,8009)問題的一點總結配上網上找到的解決方法

啟動Tomcat伺服器報錯: Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already

linux tomcat啟動與檢視

Linux啟動tomcat ./startup.sh   linux停止tomcat ./shutdown.sh   但是有時tomcat程序並沒有終止,再次啟動的時候就會導致端口占用情況發生,tomcat無法啟動。 檢視tomcat程序是否存在

windows下關閉指定埠服務,解決tomcat問題

<iframe id="cproIframe_595135_2" width="250" height="250" src="http://cb.baidu.com/ecom?adn=3&amp;at=231&amp;aurl=&amp;cad=1&amp;ccd=24

Tomcat(8005,8080,8009)問題常見原因及解決方法

在企業版Eclipse中,在已經啟動了Tomcat伺服器後,準備執行頁面或Servlet時,有時會出現這樣的關於Tomcat伺服器端口占用的問題:“Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server

關於MyEclipse2016 tomcat問題及解決方案

首先我們先去tomcat官網下載一個新的客戶端,這裡我們下載8.0版本 (建議大家放棄官方自帶的吧,官方自帶的不會修改,網上也搜不到,自由2016之前的版本修改方法) 下載並解壓,然後把解壓出來的檔案放在你MyEclipse的安裝目錄下,這點很重要!!!!不放在安裝目錄下

Tomcat(8005,8080,8009)問題常見原因及解決方法

啟動Tomcat伺服器報錯: Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already

Tomcat問題(Several ports (8005, 8080, 8009) required by Tomcat v8.0 Server at localhost are alre)

方法一,解除佔用埠 開啟工作管理員,檢視程序,很有可能是顯示javaw佔用,關閉所使用的程式設計軟體(如myecplise),重新開啟即可。如果不可以可以嘗試下面步驟關閉程序1. win + R,輸入cmd回車進入dos介面 2. 輸入netstat -ano|findstr

啟動tomcat失敗,原因,但是不能通過結束服務關掉tomcat解決方法

一、起因 用Eclipse啟動tomcat後,由於沒有按正常的關閉Eclipse,而是在工作管理員直接結束Eclipse,導致tomcat沒有關閉。 等我再次開啟eclipse時,啟動tomcat報端

idea部署Tomcat報1099

IDEA中啟動Tomcat專案報如下的錯,Error running Tomcat7.0.52: Address localhost:1099 is already in use 或者是 java.rmi.server.ExportException: Port

更改tomcat埠8080為80的時候,有系統的問題

前些天搞微信開發,測試伺服器配置的時候遇到了一個問題,微信僅僅支援80埠,而tomcat的埠為8080,本以為將tomcat的埠改了就可以了,結果又遇到了各種莫名其妙的問題,折騰了一下午才算是弄好,以下是我的解決過程,分享給大家。 首先,進入到遠端伺服器,進入到tomcat

解決tomcat伺服器的方法

Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The server may already be running in another process, or

Eclipse jsp 執行tomcat提示錯誤

4.手工的Person 類對應的class檔案(包含)複製到classes目錄下 可以通過修改預設的輸出目錄達到自動把編譯好的class放到classes目錄下; tomcat埠衝突錯誤:

Tomcat出現錯誤

端口 localhost 修改 ever you 顯示錯誤 stop may this Several ports (8005, 8080, 8009) required by Tomcat v8.5 Server at localhost are already i