java.net.ConnectException: Connection refused: connect

1. 报错如上

2. 原因和解决:

 

1)端口号被占用:杀死占用端口号(一般为8080)的进程,释放端口;彻底关闭 Tomcat 服务器,或者重新启动项目。【如《java.net.ConnectException: Connection refused问题解决办法 【介绍较详细】》所述,对于dubbo微服务系统中,如果消费者(客户端)(server1)调用生产者(server2)报这个错误,则有可能是消费者(客户端)的端口被占用,所以可以杀死或重启该消费者(客户端)的服务。如果其他服务端能调到server1的服务,而server1调用server2报了这个错,证明server1是正常连到zk的,并且与其他微服务的网络也通,这时基本可以判断sever2到zk、到整个网络的链接是有问题的,所以问题在server2,要么ip有问题,要么端口有问题,此时可以看其他微服务是否可以调用成功server2的服务,如果也报这个错或类似网络错误,则server2必有问题,此外也可以参照以下的一些方法进行定位】

2)使用以下命令检查服务器中允许的最大进程数: ulimit -u。如果将此值设置为较低值,例如1024,则使用以下值将其增加到131072或无限制:ulimit -u 131072  或者 ulimit -u无限制 。

 

3)客户端和服务器,它们中的任何一个或两个都不在网络中。

它们可能没有连接到LAN或互联网或任何其他网络,在这种情况下,Java将会抛出

客户端的“ java.net.ConnectException:Connection refused ”异常。

4)服务器未运行用

是服务器已关闭但未运行。在这种情况下,你也会得到java.net.ConnectException:连接被拒绝错误。可ping来检查服务器是否正在运行并侦听端口。

5)服务器正在运行但没有侦听端口,客户端正在尝试连接。

服务器正在运行但是正在侦听不同的端口。验证配置。如果你正在处理一个大项目,并有一个分层配置文件,它可能是默认配置或其他一些设置覆盖了您正确的设置。

 

6)主机端口组合不允许使用防火墙

几乎每个企业网络都受防火墙保护。如果您正在连接其他公司网络,例如在任何电子交易系统中,需要提高防火墙

双方要求确保他们允许彼此的IP地址和端口号。如果防火墙不允许连接,也会收到相同的java.net.ConnectException:Java应用程序中的连接拒绝异常。

 

7)主机端口组合不正确。

提供的主机端口组合不正确,或者服务器端的早期主机端口组合已经更改。检查客户端和服务器端的最新配置。

 

8)连接字符串中的协议不正确

TCP是许多高级协议的基础协议,包括HTTP,RMI等。通过连接时字符串,你需要确保你传递正确的协议,服务器期望。例如服务器已暴露,通过 RMI 而不是连接字符串的服务应该以rmi:// 开头。

 

 

3.我的情况:
我的原因到是比较简单,大概属于上面的第5、7、8点,反正就是配置不正确。我只是把 数据库所在服务器 IP 地址写错了。

spring.datasource.url=jdbc:mysql://数据库所在服务器IP:3306/gaei_ms?useUnicode=true&characterEncoding=utf-8&useSSL=false