From a874e4347046c32a30ea6332a83751e21b4cbc04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E8=93=AC?= Date: Sun, 4 Jun 2023 12:45:51 +0800 Subject: [PATCH 1/3] update log config --- .../sofa-ark-spring-boot-demo/index.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md b/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md index 0da8240e9..1a6874c3a 100644 --- a/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md +++ b/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md @@ -12,6 +12,7 @@ aliases: "/sofa-boot/docs/sofa-ark-spring-boot-demo" 5. 如何执行 Spring Boot 业务应用 6. 多 Host 与单 Host 模式 7. 如何动态卸载 Spring Boot 业务应用 +8. 日志配置 ## 1. 简介 @@ -340,4 +341,18 @@ logging.file.path=./logs ## 7. 如何动态卸载 Spring Boot 业务应用 -目前 Spring boot 不支持动态卸载。如果要动态卸载,需要注册一个卸载的事件handler,请参考 sofaboot 的代码:[SofaBizUninstallEventHandler](https://github.com/sofastack/sofa-boot/blob/master/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/SofaBizUninstallEventHandler.java)。 \ No newline at end of file +目前 Spring boot 不支持动态卸载。如果要动态卸载,需要注册一个卸载的事件handler,请参考 sofaboot 的代码:[SofaBizUninstallEventHandler](https://github.com/sofastack/sofa-boot/blob/master/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/SofaBizUninstallEventHandler.java)。 + +## 8. 日志配置 + +- logback 框架配置日志参数 + +一般而言,建议业务应用使用 application.properties 配置日志参数,**不要写在 logback-spring.xml 中**。因为业务应用使用的 LoggerContext 是宿主应用的 LoggerContext(由宿主的类加载器加载),LoggerContext 只会在初始化时读取一次宿主应用的 logback-spring.xml,所以业务应用即使配置了 logback-spring.xml 也不会被读取。 + +- 切换至 log4j2 框架 + +排除项目各项依赖中的 logback 依赖,添加 log4j2依赖。 + +- SOFAArk 容器日志 + +参考 [Ark 日志说明](../sofa-ark-ark-log) 和 [配置文档](../sofa-ark-ark-config). \ No newline at end of file From 8b8bedb4db9a896be5f99d1569143ca908f0c6ae Mon Sep 17 00:00:00 2001 From: gaosaroma Date: Mon, 3 Jul 2023 15:08:14 +0800 Subject: [PATCH 2/3] update sofa_ark_demo_doc --- .../sofa-ark-spring-boot-demo/index.md | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md b/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md index 1a6874c3a..990f9c473 100644 --- a/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md +++ b/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md @@ -13,6 +13,7 @@ aliases: "/sofa-boot/docs/sofa-ark-spring-boot-demo" 6. 多 Host 与单 Host 模式 7. 如何动态卸载 Spring Boot 业务应用 8. 日志配置 +9. 其它最佳实践 ## 1. 简介 @@ -54,7 +55,7 @@ aliases: "/sofa-boot/docs/sofa-ark-spring-boot-demo" spring-boot-ark-biz biz - + true @@ -87,7 +88,23 @@ aliases: "/sofa-boot/docs/sofa-ark-spring-boot-demo" ``` -### 2.2 打包 +### 2.2 修改 Spring Boot 启动类 + +由于配置了 declaredMode,需要让模块导入资源时,优先从模块里查找,因此需要配置业务应用的资源加载器,定制化启动 Spring Boot 业务应用,如下: + +```java +public static void main(String[] args) { + SpringApplicationBuilder builder = new SpringApplicationBuilder(SpringBootArkBizApplication.class).web(WebApplicationType.SERVLET); + + // set biz to use resource loader. + ResourceLoader resourceLoader = new DefaultResourceLoader(SpringBootArkBizApplication.class.getClassLoader()); + builder.resourceLoader(resourceLoader); + // run springboot application. + ConfigurableApplicationContext context = builder.build().run(args); + } +``` + +### 2.3 打包 首先,使用 maven 打包业务应用,如下: From 3c7acc6fcc919e3e5679ec93ef36c6ccfa80bd00 Mon Sep 17 00:00:00 2001 From: gaosaroma Date: Mon, 3 Jul 2023 15:25:39 +0800 Subject: [PATCH 3/3] update best practice --- .../sofa-boot/sofa-ark-spring-boot-demo/index.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md b/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md index 990f9c473..f2922a147 100644 --- a/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md +++ b/content/zh/projects/sofa-boot/sofa-ark-spring-boot-demo/index.md @@ -358,7 +358,9 @@ logging.file.path=./logs ## 7. 如何动态卸载 Spring Boot 业务应用 -目前 Spring boot 不支持动态卸载。如果要动态卸载,需要注册一个卸载的事件handler,请参考 sofaboot 的代码:[SofaBizUninstallEventHandler](https://github.com/sofastack/sofa-boot/blob/master/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/SofaBizUninstallEventHandler.java)。 +目前 Sofa Boot 支持动态卸载,而 Spring boot 不支持动态卸载。如果要动态卸载,需要注册一个卸载的事件handler,请参考 sofaboot 的代码:[SofaBizUninstallEventHandler](https://github.com/sofastack/sofa-boot/blob/master/sofa-boot-project/sofa-boot-core/runtime-sofa-boot/src/main/java/com/alipay/sofa/runtime/SofaBizUninstallEventHandler.java)。 + +同理,如果业务应用卸载时存在资源未释放情况,可以注册一个监听模块卸载事件或者 spring 上下文关闭事件,来动态释放 socket 和 定时任务以及类似的例如缓存、线程池等。 ## 8. 日志配置 @@ -372,4 +374,8 @@ logging.file.path=./logs - SOFAArk 容器日志 -参考 [Ark 日志说明](../sofa-ark-ark-log) 和 [配置文档](../sofa-ark-ark-config). \ No newline at end of file +参考 [Ark 日志说明](../sofa-ark-ark-log) 和 [配置文档](../sofa-ark-ark-config). + +## 9. 其它最佳实践 + +建议 Spring Boot 业务应用 使用的 Spring Boot 版本和 Spring Boot 宿主应用保持一致。SofaArk 不支持业务应用和宿主应用使用启动框架的不同版本,也不建议用这种使用方式。 \ No newline at end of file