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的修改可以参考: