You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/02/13 12:59:33 UTC
[servicecomb-docs] branch master updated: [SCB-1745] remove
accessor modifier in reflection
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git
The following commit(s) were added to refs/heads/master by this push:
new 872209b [SCB-1745] remove accessor modifier in reflection
872209b is described below
commit 872209b4ea7c2189ecef2addfa61c6efa46abca3
Author: liubao <bi...@qq.com>
AuthorDate: Thu Feb 13 20:53:13 2020 +0800
[SCB-1745] remove accessor modifier in reflection
---
java-chassis-reference/en_US/docs/security/rsa.md | 44 ++++++++---------
java-chassis-reference/zh_CN/docs/index.md | 6 +--
.../zh_CN/docs/security/shi-yong-rsa-ren-zheng.md | 52 ++++++++++----------
.../zh_CN/docs/upgrading/1_to_2.md | 55 +++++++++++++++++++---
4 files changed, 95 insertions(+), 62 deletions(-)
diff --git a/java-chassis-reference/en_US/docs/security/rsa.md b/java-chassis-reference/en_US/docs/security/rsa.md
index 9e9fb68..2afbb9b 100644
--- a/java-chassis-reference/en_US/docs/security/rsa.md
+++ b/java-chassis-reference/en_US/docs/security/rsa.md
@@ -8,47 +8,43 @@ Detailed introduction [public key authentication] (../references-handlers/public
* Add dependencies in pom.xml:
- ```
+```
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>handler-publickey-auth</artifactId>
</dependency>
- ```
+```
* Added to the processing chain in microservice.yaml
- ```
- servicecomb:
- ......
- handler:
+```
+servicecomb:
+ handler:
chain:
- Consumer:
- default: auth-consumer
- ......
- ```
+ Consumer:
+ default: auth-consumer
+```
## Provider Configuration
* Add dependencies in pom.xml:
- ```
- <dependency>
- <groupId>org.apache.servicecomb</groupId>
- <artifactId>handler-publickey-auth</artifactId>
- </dependency>
- ```
+```
+<dependency>
+ <groupId>org.apache.servicecomb</groupId>
+ <artifactId>handler-publickey-auth</artifactId>
+</dependency>
+```
* Added to the processing chain in microservice.yaml
- ```
- servicecomb:
- ......
- handler:
+```
+servicecomb:
+ handler:
chain:
- Provider:
- default: auth-provider
- ......
- ```
+ Provider:
+ default: auth-provider
+```
diff --git a/java-chassis-reference/zh_CN/docs/index.md b/java-chassis-reference/zh_CN/docs/index.md
index d6caa7c..101a5e4 100644
--- a/java-chassis-reference/zh_CN/docs/index.md
+++ b/java-chassis-reference/zh_CN/docs/index.md
@@ -11,8 +11,8 @@ Apache ServiceComb Java Chassis 给开发者提供一个快速构建微服务的
| 版本| 链接 | 说明 |
| :--- | :--- | :--- |
-| 最新(2.0.0) | [中文](https://docs.servicecomb.io/java-chassis/zh_CN/), [English](https://docs.servicecomb.io/java-chassis/en_US/)| 由github pages托管, 适合国外用户|
-| 最新(2.0.0) | [中文](http://liubao68.gitee.io/servicecomb-java-chassis-doc/java-chassis/zh_CN/), [English](http://liubao68.gitee.io/servicecomb-java-chassis-doc/java-chassis/en_US/)| 由gitee pages托管, 适合国内用户|
-| 最新(2.0.0) | [中文](http://1v96us.coding-pages.com/docs/java-chassis/zh_CN/), [English](http://1v96us.coding-pages.com/docs/java-chassis/en_US/)| 由coding托管, 适合国内用户|
+| 最新(2.0.0) | [中文](https://docs.servicecomb.io/java-chassis/zh_CN/), [English](https://docs.servicecomb.io/java-chassis/en_US/)| 由github pages托管 |
+| 最新(2.0.0) | [中文](http://liubao68.gitee.io/servicecomb-java-chassis-doc/java-chassis/zh_CN/), [English](http://liubao68.gitee.io/servicecomb-java-chassis-doc/java-chassis/en_US/)| 由gitee pages托管,适合中国用户|
+| 最新(2.0.0) | [中文](http://1v96us.coding-pages.com/docs/java-chassis/zh_CN/), [English](http://1v96us.coding-pages.com/docs/java-chassis/en_US/)| 由coding托管,适合中国用户|
| 1.3.0 | [中文](https://docs.servicecomb.io/java-chassis/1.x/zh_CN/), [English](https://docs.servicecomb.io/java-chassis/1.x/en_US/)| |
| 1.2.1 | [中文](https://docs.servicecomb.io/java-chassis/1.x/zh_CN/), [English](https://docs.servicecomb.io/java-chassis/1.x/en_US/)| |
\ No newline at end of file
diff --git a/java-chassis-reference/zh_CN/docs/security/shi-yong-rsa-ren-zheng.md b/java-chassis-reference/zh_CN/docs/security/shi-yong-rsa-ren-zheng.md
index e66d2a2..0e60c0d 100644
--- a/java-chassis-reference/zh_CN/docs/security/shi-yong-rsa-ren-zheng.md
+++ b/java-chassis-reference/zh_CN/docs/security/shi-yong-rsa-ren-zheng.md
@@ -8,47 +8,43 @@
* 在pom.xml中增加依赖:
- ```
- <dependency>
- <groupId>org.apache.servicecomb</groupId>
- <artifactId>handler-publickey-auth</artifactId>
- </dependency>
- ```
+```
+<dependency>
+ <groupId>org.apache.servicecomb</groupId>
+ <artifactId>handler-publickey-auth</artifactId>
+</dependency>
+```
* 在microservice.yaml中添加进处理链
- ```
- servicecomb:
- ......
- handler:
+```
+servicecomb:
+ handler:
chain:
- Consumer:
- default: auth-consumer
- ......
- ```
+ Consumer:
+ default: auth-consumer
+```
## Provider配置
* 在pom.xml中增加依赖:
- ```
- <dependency>
- <groupId>org.apache.servicecomb</groupId>
- <artifactId>handler-publickey-auth</artifactId>
- </dependency>
- ```
+```
+<dependency>
+ <groupId>org.apache.servicecomb</groupId>
+ <artifactId>handler-publickey-auth</artifactId>
+</dependency>
+```
* 在microservice.yaml中添加进处理链
- ```
- servicecomb:
- ......
- handler:
+```
+servicecomb:
+ handler:
chain:
- Provider:
- default: auth-provider
- ......
- ```
+ Provider:
+ default: auth-provider
+```
diff --git a/java-chassis-reference/zh_CN/docs/upgrading/1_to_2.md b/java-chassis-reference/zh_CN/docs/upgrading/1_to_2.md
index d4cacd4..b67fde2 100644
--- a/java-chassis-reference/zh_CN/docs/upgrading/1_to_2.md
+++ b/java-chassis-reference/zh_CN/docs/upgrading/1_to_2.md
@@ -1,8 +1,8 @@
# 1.x迁移2.x指南
-## 变更点说明
-* Highway通信协议的变更
+## Highway通信协议的变更
+
Highway通信协议是2.x的变更是最大的。如果业务采用了Highway通信协议,需要确保所有相关的consumer和provider都必须升级,低版本的consumer和高版本的provider之间无法直接通信。此外,从代码风格的层面,还有如下一些变更。
1. 空字符串和null的传输:由于protobuffer协议对于空字符串和null在序列化的时候,都是为空,反序列化的结果都是null。 因此应用程序的业务逻辑不应该通过空字符串和null表达不一样的语义。尽管对于REST,程序底层支持这样的区分,仍然不建议将业务逻辑构筑在这个假设之上,从而避免很多的陷阱。
@@ -57,10 +57,11 @@ public enum Media {
WMV
}
```
+
因为protobuffer的IDL文件不支持 ., -等字符,所以上述例子中的H.264和MPEG-2名称不能够用于HIGHWAY的ENUM类型。
-* RestTemplate的使用
+## RestTemplate的使用
对于下面的consumer和provider代码:
@@ -99,13 +100,53 @@ List<SpringmvcBasicResponseModel> responseModelList =
可以看出java-chassis对于RestTemplate使用的语义在2.x和Spring MVC保持了一致,同时兼容了1.x的用法。细心的开发者可能注意到了1.x的运行结果Spring MVC是得不到的,这是因为1.x版本可以根据契约类型反序列化对象。2.x也支持这种方式,新增了"调用类型"覆盖"契约类型"的方式,这种方式根据对于consumer和provider之间的编译依赖更小。
-* AsyncRestTemplate的使用
+## AsyncRestTemplate的使用
1.x 和 2.x 中AsyncRestTemplate的使用方式一样,没有变化。但是由于2.x只支持spring 5版本,而spring 5将AsyncRestTemplate标记为废弃状态,开发者在后续开发过程中尽可能不要使用AsyncRestTemplate。可以使用CompletableFuture来替代,可以参考这个[例子](https://github.com/apache/servicecomb-samples/pull/41/files)。
-## 常见问题
+## Spring Boot 集成的变化
+
+2.x 不再支持 spring 4 和 spring boot 1, 缺省使用 spring 5 和 spring boot 2, 并修改了相关 starters 的名称。 可以
+通过阅读 [在Spring Boot中使用java chassis](../using-java-chassis-in-spring-boot/using-java-chassis-in-spring-boot.md)了解相关变化。
+
+## 支持 JDK 11
+
+2.x 版本可以在 JDK 11下运行,并进行了简单的集成测试。 这个版本最主要的支持 JDK 版本仍然是 8, 并没有采用 JDK 11 编译。
+JDK 11 的一个主要变化是后续可能不在支持通过反射改变类的封装性。 这个特性目前有很多地方使用, 2.x 版本为了适配 JDK 11,
+某些特性的使用会发生变化。 具体有如下几个特性 :
+
+* 使用 EventManager 注册事件
+
+在 1.x 版本, 允许采用 private 类 或者 内部匿名类作为事件监听对象, 比如:
+
+```java
+public void myMethod() {
+ Object receiveEvent = new Object() {
+ @Subscribe
+ public void onEvent(AlarmEvent circutBreakerEvent) {
+ taskList.add(circutBreakerEvent);
+ }
+ };
+ EventManager.getEventBus().register(receiveEvent);
+}
+```
+
+在 2.x 版本不允许,启动的时候会报告异常。 2.x 版本注册的事件监听器,必须保证对于 EventManager 类具有可访问性。 通常
+定义的类和 EventManager 不属于同一个 package , 因此这个类必须是 public 的, 事件处理方法也必须是 public 的。
+
+* 定义接口的 Model 使用匿名内部类
+
+在 1.x 版本, 使用匿名内部类作为 REST 接口的 Model 是允许的, 但是 2.x 版本不允许。 如果采用这样的类型作为接口参数,
+启动的时候会报告异常。
-### 运行错误
+* 其他方面的影响
+
+由于 JDK 11 不允许通过反射破坏封装, 早期通过反射修改 private 字段的值,来规避一些三方软件的 bug, 以及做一些额外
+定制变得不可行, 使用这些特性 JDK 11 暂时只是打印警告, 在 JDK 13 等更高版本会彻底禁止。 因此业务开发的时候, 尽可能
+不要使用破坏封装的特性。
+
+
+## 常见问题
* java-chassis运行时依赖于接口定义里面的名字
@@ -190,7 +231,7 @@ Caused by: java.lang.NullPointerException
不能够在bean的初始化里面使用SCBEngine的实例。这个实例业务需要在事件AFTER_REGISTRY等处理函数中使用。
-### 编译错误
+## 编译错误
2.x相对于1.x升级了大量三方件,包括netty, vert.x, spring, spring boot等,直接引用这些组件的代码可能编译失败。同时还对代码进行了一定重构,有些代码使用了java-chassis未公开接口,使用这些接口可能编译失败。下面是一些常见的问题。下面一些PR的修改可以参考: