Socket bind failed: [730048],tomcat啟動失敗
嚴重: Error starting endpoint java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í?? at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:649) at org.apache.tomcat.util.net.AprEndpoint.start(AprEndpoint.java:756) at org.apache.coyote.http11.Http11AprProtocol.start(Http11AprProtocol.java:137) at org.apache.catalina.connector.Connector.start(Connector.java:1095) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2012-4-17 18:30:17 org.apache.catalina.core.StandardService start 嚴重: Failed to start connector [Connector[HTTP/1.1-8080]] LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í?? at org.apache.catalina.connector.Connector.start(Connector.java:1102) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
出現以上的問題不要緊張,這個問題主要的原因是:tomcat的8080埠被佔用了。解決的步驟方法如下:
第一種方法:檢視埠。
1.開始-執行-輸入cmd-netstat -ano-回車-查到8080埠的PID (linux下netstat -anp | grep :8080)
2.通過Ctrl+Alt+Delete快捷鍵開啟Windows工作管理員-檢視-選擇列-勾選PID(程序識別符號)(P)-找到8080埠的PID-結束程序
或開始-執行-輸入cmd-netstat -ano|find "8080 "-tasklist|find "PID "-askkill /pid PID
由於我出現上述的問題是由於剛剛安裝了oracle,Oracle中的 tnslsnr.exe程序佔用了8080埠(oracle\ora92\bin\TNSLSNR.EXE)。故將tnslsnr.exe的程序結束,重新執行tomcat中的專案,發現不能連線資料庫。對此我看了網上的一些資料,才知道:tnslsnr.exe 關掉後就不能通過網路方式連線資料庫了(本機通過JDBC連也不行),但在伺服器端還可以使用。如果你還想使用8080埠號又要能連線oracle資料庫,那只有改tnslsnr.exe的埠8080為其他的埠號。在網上找到資料如下:具體的可否使用還沒有測試,請原諒,希望後面的人測試了可以留言告訴一下後面的學習者,非常感謝。
以下修改tnslsnr.exe佔用8080埠的內容來自:pendy2008的博文
oracle 10服務一啟動 TNSLSNR.exe 會佔用8080埠,這時,需要改一下埠:
用oracle提供的包:
-- 把HTTP/WEBDAV埠從8080改到8081
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),
'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081))
/
-- 把FTP埠從2100改到2111
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),
'/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()',2111))
/
SQL> commit;
SQL> exec dbms_xdb.cfg_refresh;
-- 檢查修改是否已經成功
SQL> select dbms_xdb.cfg_get from dual;
第二種方法:改tomcat中的埠。
修改Tomcat 6.0\conf\server.xml,找到該檔案中的以下標籤內容。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
將port=“8080”改為其他埠。注意:不要使用伺服器端使用的熟知埠號,數值為0~1023,而數值為1024-49151的登記埠號是可以使用的,還有一類是客戶端使用的埠號---短暫埠號,數值為49152~65535,這類埠號是僅在客戶程序執行時才動態選擇的,是留給客戶程序選擇暫時使用。簡而言之,一般將埠該為8080左右的人一個埠號就可以了。但這種方法效果沒有第一種好,因為修改後的埠也存在被暫用的可能。
第三種方法:結束javaw.exe和java.exe程序
出現這種情況也有可能是由於Myeclipse 不正常退出導致的,不過終於找到了一個可行的辦法。開啟工作管理員,找到名為JAVAW.EXE 和JAVA.EXE的程序(大小寫可能有不同),結束掉佔記憶體小的那個(佔記憶體大的那個為當前正在使用的myeclipse),重啟tomcat,問題解決。
第四種方法:取消tomcat的自動啟動
假如你設定了tomcat開機時自啟動,在專案裡在啟動tomcat時就報了埠被佔用的錯誤。解決的辦法是把tomcat開機時啟動禁掉,重啟計算機,在專案裡啟動tomcat,基本上可以了