(本文档仅供参考)

问题描述

        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)请根据实际情况来修改端口号并保存,重启服务: