SpringBoot 启动运行成功,localhost无法访问连接

SpringBoot 启动运行成功,localhost无法访问连接

问题描述

本项目是一个物联网项目,技术框架 SpringBoot+Netty+MySql+MybatisPlus+Swagger

今天运行SpringBoot项目过程中,项目代码没有出现报错情况,在SpringBoot初始化成功之后,在web端访问api文档时,出现了无法访问此网站——localhost拒绝连接访问请求。针对这一问题我开始进行排查解决。
浏览器拒绝访问的情况截图

问题的排除

对于这一出现的问题,我脑海中可能出现了几中假设通过这些假设,对出现问题原因的范围进行缩小。有利于进行问题排查

  1. 电脑关于网络设置出现了问题?
  2. 浏览器设置出现问题?
  3. 项目程序代码出现了问题

在网上针对假设1、假设2的问题我也发现了自己电脑中丢失了host文件,进行了解决之后,运行项目之后,仍然无法访问。于是开始针对本项目程序代码问题进行各种方向排查。

项目工程代码可能的原因

查询中文网站的帖子,花了一下午的时间,一 一进行排查解决,但是问题仍然没有得解决。我于是新建了一个SpringBoot工程demo ,写了一个例子发现能够在浏览器正常访问,之后在demo项目中的maven文件中加入swagger相关依赖包进行测试排查。在运行项目之后,可以正常在浏览器上访问。经过这一步可以再次缩小出现原因的范围。
图1 demo工程正常启动日志
图2 出现问题代码的SpringBoot启动日志

原因的发现和锁定

在咨询实验室同学进行讨论无果之后,我开始仔细比较demo工程和问题代码文件的异同,进行细致比较,我还怀疑是不是pom依赖包版本不兼容出现的问题。当进一步排查之后,我开始查看demo工程SpringBoot启动日志的时候与我自己出现问题的工程文件的SpringBoot启动日志进行比较。我注意到两边项目运行日志有不同。问题工程的SpringBoot的内嵌tomcat只是完成了初始化并没有实现开始启动,而且项目工程的Application也没有正式start。

于是,我根据日志的不同,对问题进行分析,因为本菜鸟的工程是一个物联网项目,需要使用Netty,同时需要开启一个端口监听下位机设备发送的数据信息。而tomcat也需要一个端口(默认8080)才能在浏览器访问。
之所以出现问题,就是因为我只开了一个线程,而且是项目工程是先完成的tcp端口数据收发,之后把项目进行tomcat部署。所以问题的原因在于,单线程的情况下,程序访问监听了TCP的端口,tomcat在初始化之后无法访问到8080端口。问题的原因就是线程
后来百度发现这一个帖子也再一次印证了问题所在,关于SpringBoot+Netty打war包部署外部tomcat导致Tomcat不能访问的解决办法

问题的解决

原来是在项目入口原代码设置了一个监听器,完成对tcpserver的监听 netty中完成数据的接收和指令下发。

/程序入口
@SpringBootApplication
@MapperScan("com.xxx.miot.mapper")
//@EnableConfigurationProperties
//@EnableTransactionManagement
@EnableSwagger2
@ComponentScan("com.xxx.miot.*")
public class MiotApplication  implements CommandLineRunner {
   

    public static void main(String[] args) {
   
        SpringApplication.run(MiotApplication.class, args);
    }

    @Autowired

    private TcpServer server;

    @Override
    public void run(String... args
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
根据提供的引用内容,你遇到了一个连接数据库的问题,错误信息是"Access denied for user 'root'@'localhost' (using password: YES)"。这个错误通常是由于用户名或密码不正确导致的。解决这个问题的方法有以下几种: 1. 确认用户名和密码是否正确:首先,你需要确认你的数据库用户名和密码是否正确。可以尝试使用正确的用户名和密码登录数据库,确保能够成功登录。 2. 检查数据库权限:如果用户名和密码正确,但仍然无法连接数据库,可能是因为该用户没有足够的权限访问数据库。你可以检查该用户是否具有正确的权限,例如是否具有连接数据库的权限。 3. 检查数据库连接配置:在你的Spring Boot项目中,你需要确保数据库连接配置正确。你可以检查你的application.properties或application.yml文件中的数据库连接配置,确保用户名、密码、数据库URL等信息正确。 4. 检查数据库驱动程序:确保你的项目中引入了正确的数据库驱动程序。根据引用中的配置,你需要使用com.mysql.cj.jdbc.Driver作为驱动程序。 5. 检查数据库服务是否正常运行:如果以上步骤都没有解决问题,你可以检查一下数据库服务是否正常运行。确保数据库服务已经启动,并且可以正常访问。 以下是一个示例的Spring Boot项目中连接MySQL数据库的配置: ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: "0458" ``` 请注意,这只是一个示例配置,你需要根据你自己的数据库配置进行相应的修改。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值