- nacos-server 1.1.4
- nacos-client 1.1.4(设置alibaba.dependencies:2.1.1,详见:最后pom.xml)
- springboot 2.2.5
- cloud.version Hoxton.SR3
-
项目启动时
The web application [xxx] appears to have started a thread named [xxxx] but has failed to stop it. This is very likely to create a memory leak.
sun.misc.Unsafe.park.
- 依赖问题,查看nacos-server(本地服务)是否和nacos-client(idea导入的jar)版本一致,或者有版本冲突
2.还是启动时问题
started application xx seconds,应用启动成功后报redis或者sql连接问题
- 导入了spring-boot-starter-actuator,springboot健康监控
- 不用时候:去掉依赖或者在yml文件中加入日志打印级别(自欺欺人法),网上还有yml配置监控的端点(这个我没试过)
- 不用时候:去掉依赖或者在yml文件中加入日志打印级别(自欺欺人法),网上还有yml配置监控的端点(这个我没试过)
- 当需要springboot健康监控时候,就只能乖乖的启动nacos服务,mysql服务,redis服务了。。。
另:遇到个怪异问题,两台电脑,使用相同的依赖,yml配置(都是手打的),一个健康监控起作用(即,每次启动应用,不启动mysql服务或者reids服务就会一直报错;一个不起作用(即,启动应用,不启动mysql或redis服务都不会报错)。检查了几遍也没发现问题所在。。。
3.还是启动时问题。。
由module项目改为非module项目(当时是改为gateway)时,启动时没有编译bootstrap.yml,即target里没有编译后的bootstrap.yml,导致报了nacos服务为空,一直以为是yml文件里配置写错。。
- 去掉pom.xml文件中的<packaging>pom</packaging>或改为其他(改为其他没有验证)
另:gateway项目无法使用tomcat,只能使用自带的netty容器,想使用导入spring-boot-starter-web依赖强制使用tomcat,会报错。。
4.总结:
还有一些小问题,解决后就忘记了。。所以没写出来,不过大多数耗时的问题都是依赖包冲突或者版本不匹配导致的,其余的都是yml配置错误等小问题
- 下面是pom.xml(父pom和子pom)父pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.meichao</groupId>
<artifactId>bootframe</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>final</module>
<module>hello</module>
<module>base</module>
</modules>
<!--指定父级依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!--<version>1.5.11.RELEASE</version>-->
<version>2.2.5.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--<tomcat.version>8.5.56</tomcat.version>-->
<spring.cloud.version>Hoxton.SR3</spring.cloud.version>
<alibaba.dependencies>2.1.1.RELEASE</alibaba.dependencies>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- 父pom中,直接用dependence的依赖 子项目的pom无需再引用 直接无条件继承
而父pom中用在dependenceManagement里的dependence,子项目想要继承就必须在自己的pom中再声明一次
但是不需要写版本号默认继承父pom中的版本,如果指定了版本号就是用自己的版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${alibaba.dependencies}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 阿里云中央仓库,是真的爽 -->
<repositories>
<repository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!--只有项目本身的依赖,走了aliyun这个repository,maven命令需要的插件(比如clean、install都是maven的插件),走的还是默认的repository(https://repo.maven.apache.org)
所以需要加pluginRepositories-->
<pluginRepositories>
<pluginRepository>
<id>aliyun-plugin</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
-
子pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bootframe</artifactId>
<groupId>org.meichao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>base</artifactId>
<dependencies>
<!-- nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- springboot 健康监控 -->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>-->
<!-- dubbo -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<!-- redis pool-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<!--添加web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加mybatis依赖,类似一个中间件,链接springboot和mybatis,构建基于springboot和mybatis应用程序 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
<!-- 排除tomcat配置的jdbc连接池 -->
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 数据库mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 阿里的数据库连接池druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
<!-- aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- 内存持久化日志redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- JSON解析库 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
<!-- 公共基础类,如StringUtils,RandomStringUtils,DateUtils等 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- 用来读写XML文件 -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0</version>
</dependency>
<!-- 用于摘要运算,编码解码,如Base64,MD5等 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.6.0</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
</project>
- bootstrap.yml
server:
servlet:
context-path: /boot
port: 8080
spring:
profiles:
active: dev
application:
name: cloud-service
---
#使用---分隔,下面的配置与在application-dev.yml配置一样,没区别,只不过一个写在同个文件里,一个写在不同的文件里
#开发环境
nacos:
#单机模式
server-addr: 127.0.0.1
spring:
profiles: dev
cloud:
nacos:
config:
file-extension: yaml
namespace: xxx(nacos命令空间id,一连串字符)
server-addr: ${nacos.server-addr}
discovery:
server-addr: ${nacos.server-addr}
redis:
lettuce:
pool:
MaxTotal: 50
minIdle: 1
MaxWaitMillis: 5000
maxIdle: 5
local:
database: 0
hostName: 127.0.0.1
port: 6379
timeout: 5000
sys:
database: 0
hostName: 127.0.0.1
port: 6379
timeout: 5000
#数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
write:
# driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: root123
read:
# driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: root123
dubbo:
scan:
base-packages: org.meichao
protocol:
port: -1
name: dubbo
registry:
address: spring-cloud://${nacos.server-addr}
cloud:
subscribed-services: /
#设置日志级别,后面用包名(package)确定生效的区域,默认是INFO
logging:
level.org.meichao: DEBUG
-
完结撒花