Skip to content

Commit e9fd3fb

Browse files
authored
Update index.md (#1124)
* Update index.md Modify wrongly written or mispronounced characters. * Instructions for running under Windows * Update index.md * Update index.md * Update index.md * Update index.md * Update index.md * Update index.md
1 parent 4d0a328 commit e9fd3fb

File tree

2 files changed

+35
-5
lines changed
  • content/zh/projects/sofa-boot

2 files changed

+35
-5
lines changed

content/zh/projects/sofa-boot/sofa-ark-ark-demo/index.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ aliases: "/sofa-boot/docs/sofa-ark-ark-demo"
44
---
55

66
## 简介
7+
78
该样例工程演示了如何借助 `Maven` 插件将一个 Spring Boot Web 工程打包成标准格式规范的可执行 Ark 包;
89

910
## 准备
11+
1012
因该样例工程依赖 sample-ark-plugin,因此需要提前在本地安装该 `Ark Plugin`
1113

1214
## 工具
15+
1316
官方提供了 `Maven` 插件 - `sofa-ark-maven-plugin` ,只需要简单的配置项,即可将 Spring Boot Web 工程打包成标准格式规范的可执行 Ark 包,插件坐标为:
1417

1518
```xml
@@ -22,14 +25,16 @@ aliases: "/sofa-boot/docs/sofa-ark-ark-demo"
2225

2326
> [详细请参考插件使用文档](../sofa-ark-ark-jar)
2427
25-
2628
## 入门
29+
2730
基于该样例工程,我们一步步描述如何将一个 Spring Boot Web 工程打包成可运行 Ark 包
2831

2932
### 创建 SpringBoot Web 工程
33+
3034
在官网 [https://start.spring.io/](https://start.spring.io/) 下载一个标准的 Spring Boot Web 工程
3135

3236
### 引入 sample-ark-plugin
37+
3338
在工程主 `pom.xml` 中如下配置,添加另一个样例工程打包生成的 `Ark Plugin` 依赖,[参考文档](../sofa-ark-ark-plugin-demo)
3439

3540
```xml
@@ -42,6 +47,7 @@ aliases: "/sofa-boot/docs/sofa-ark-ark-demo"
4247
```
4348

4449
### 配置打包插件
50+
4551
在工程主 `pom.xml` 中如下配置 `Maven` 插件 `sofa-ark-maven-plugin` :
4652

4753
```xml
@@ -81,9 +87,11 @@ aliases: "/sofa-boot/docs/sofa-ark-ark-demo"
8187
**关于 arkClassifier 配置项需要特别注意下,默认值为空;如果不指定 classifier ,上传到仓库的 Jar 包其实是一个可运行的 Ark 包;如果需要和普通的打包加以区分,需要配置该项值。**
8288

8389
### 打包、安装、发布
90+
8491
和普通的工程操作类似,使用 `mvn package` , `mvn install` , `mvn deploy` 即可完成插件包的安装和发布;
8592

8693
### 运行
94+
8795
我们提供了两种方式在 Ark 容器上启动工程应用,通过命令行启动或者在 IDE 启动;在 IDE 启动时,需要额外添加依赖;使用命令行启动非常简便,直接使用 `java -jar` 即可启动应用;下面我们说下如何在 IDE 启动 Ark 应用;
8896

8997
* Spring Boot 工程:Spring Boot 工程需要添加如下依赖即可:
@@ -120,9 +128,11 @@ public class Application{
120128
```
121129

122130
### 运行测试用例
131+
123132
SOFAArk 提供了 `org.junit.runner.Runner` 的两个实现类,`ArkJUnit4Runner``ArkBootRunner`,分别用于集成 JUnit4 测试框架和 Spring Test;对于 TestNG 测试框架,提供了注解 `@TestNGOnArk`,对于任何 TestNG 测试用例,只有打有 `@TestNGOnArk` 的测试用例才会跑在 Ark Container 之上,否则普通用例一样。
124133

125134
#### ArkJUnit4Runner
135+
126136
`ArkJUnit4Runner` 类似 `JUnit4`,使用注解 `ArkJUnit4Runner`,即可在 SOFAArk 容器之上运行普通的 JUnit4 测试用例;示范代码如下:
127137

128138
```java
@@ -140,6 +150,7 @@ public class UnitTest {
140150
`ArkJUnit4Runner``JUnit4` 使用基本完全一致,`JUnit4` 测试框架的其他特性都能够完全兼容,
141151

142152
#### ArkBootRunner
153+
143154
`ArkBootRunner` 类似 `SpringRunner`,参考[文档](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html)学习 `SpringRunner` 的用法;为了能够在 SOFAArk 容器之上运行 Spring Boot 测试用例,只需要简单使用 `@RunWith(ArkBootRunner.class)` 替代 `@RunWith(SpringRunner.class)` 即可;示范代码如下:
144155

145156
```java
@@ -161,6 +172,7 @@ public class IntegrationTest {
161172
`ArkBootRunner``SpringRunner` 使用基本完全一致;
162173

163174
#### TestNGOnArk
175+
164176
注解 `@TestNGOnArk` 是 SOFAArk 提供给开发者用于标记哪些 TestNG 用例跑在 SOFAArk 之上,哪些只是普通的运行。例如:
165177

166178
```java
@@ -181,3 +193,19 @@ public class TestNGTest {
181193
```
182194

183195
上述用例打了 `@TestNGTest`,因此在执行该测试用例时,会先启动 Ark Container。
196+
197+
### 加载 Ark Biz
198+
199+
在 Linux/MacOS 下命令:
200+
201+
```shell
202+
biz -i file:///XXX/XXXX/target/**-ark-biz.jar
203+
```
204+
205+
在 Windows 下:
206+
207+
```shell
208+
biz -i file:///C:/XXX/XXXX/target/**-ark-biz.jar
209+
```
210+
211+
要注意,当前的 telnet 命令框暂时不支持对命令的删除,即使显示可以删除运行出来的命令依然是未删除之前加重新输入的命令,所以请尽量一次性将命令输入正确,否则将要重新输入。

content/zh/projects/sofa-boot/sofa-ark-biz-lifecycle/index.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
21
---
32
title: "Ark Biz 生命周期"
43
aliases: "/sofa-boot/docs/sofa-ark-biz-lifecycle"
54
---
65

7-
8-
SOFAArk 合并部署时,除了宿主应用,其他 Biz 允许运行时动态部署和卸载。Biz 的状态如下:
6+
SOFAArk 合并部署时,除了宿主应用,其他 Biz 允许运行时动态部署和卸载。Biz 的状态如下:
97

108
+ unresolved: 未注册,此时 Biz 包未被运行时解析
119
+ resolved: Biz 包解析完成,且已注册,此时 Biz 包还没有安装或者安装中
1210
+ activated: Biz 包启动完成,且处于激活状态,可以对外提供服务
13-
+ deactivated: Biz 包启动完成,但出于未激活状态,模块多个版本时,只有一个版本出于激活状态(注意这个状态只对 JVM 服务生效,对 RPC 等其他中间件无效)
11+
+ deactivated: Biz 包启动完成,但处于未激活状态,模块多个版本时,只有一个版本处于激活状态(注意这个状态只对 JVM 服务生效,对 RPC 等其他中间件无效)
1412
+ broken: Biz 包启动失败后状态
1513

1614
目前 SOFAArk 提供了三种方式操作 Biz:
@@ -28,6 +26,7 @@ SOFAArk 合并部署时,除了宿主应用,其他 Biz 允许运行时动态
2826
**注意:部署相同名称不同版本 Biz 时,如果已有激活的版本,后续部署的其他版本 Biz 将自动处于钝化状态**
2927

3028
### 安装 Biz
29+
3130
以 Spring Boot/SOFABoot 为例,应用(模块)安装包含以下流程:
3231

3332
![installation flow](installation-flow.png)
@@ -50,6 +49,7 @@ SOFAArk 合并部署时,除了宿主应用,其他 Biz 允许运行时动态
5049
**注意:启动模块时抛出异常,均导致 Biz 启动失败,可以查看 sofa-ark/common-error.log 日志**
5150

5251
### 卸载 Biz
52+
5353
应用(模块)卸载包含以下流程:
5454

5555
![uninstallation-flow](uninstallation-flow.png)
@@ -73,6 +73,7 @@ SOFAArk 合并部署时,除了宿主应用,其他 Biz 允许运行时动态
7373
> Biz 执行完所有卸载操作时,将状态置为 unresolved
7474
7575
#### 卸载面临的挑战
76+
7677
卸载 Biz 最大的挑战在于 ClassLoader 的卸载,如果 ClassLoader 没有卸载干净,极有可能会导致 metaspace OOM. JDK 对 Class 的回收条件非常苛刻,包含:
7778

7879
+ 该类所有实例都已经回收
@@ -82,4 +83,5 @@ SOFAArk 合并部署时,除了宿主应用,其他 Biz 允许运行时动态
8283
每个 Biz 都由独立的 BizClassLoader 加载,只要该 Biz 的加载的类或对象或 ClassLoader 被其他 Biz 或 Plugin 引用,则会导致 Biz 无法卸载成功
8384

8485
### 激活 Biz
86+
8587
激活指令用于设置 Biz 状态为 Activated,如果此时已有其他版本 Biz 处于激活状态,则先设置其为 Deactivated,再激活指定的 Biz 为 Activated. 激活状态是相对 JVM 服务而言,只有被激活的 Biz,其发布的 JVM 服务才能被其他 Biz 引用

0 commit comments

Comments
 (0)