(本文档仅供参考)
问题描述
Tomcat、weblogic或者WebSphere等应用服务器启动的时候报 Address already in use (Bind failed) ,即端口号被占用的问题。
01-Feb-2021 10:44:22.600 严重 [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:421) at org.apache.catalina.startup.Catalina.await(Catalina.java:776) at org.apache.catalina.startup.Catalina.start(Catalina.java:722) 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:342) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
如何排除端口号占用情况?
方式:通过netstat -tunlp | grep 端口号,用于查看指定端口号的进程情况
如netstat -tunlp | grep 18700 ,即查看端口号18700的使用情况。
若是有进程占用就显示如下图,java进程号是15443
如果上图显示多条记录,说明有多个java进程占用着端口号。
确认好占用当前端口号好的java进程号后,这时候可以通过ps -ef|grep 端口号,如ps -ef|grep 15443 命令查看15443具体是哪个进程在占用,如下图,可以看到占用18700端口号的java进程以及tomcat路径。
以Tomcat为例修改端口号
(1)打开server.xml文件。文件的目录是:<SmartbiInstallPath>Smartbi\Tomcat-xx\conf\
(2)请根据实际情况来修改端口号并保存,重启服务: