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/26 10:01:15 UTC

[servicecomb-docs] 02/02: add more details about upgrading

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

commit 433df8b7ba78bc33c901968ac86ba26e23c30845
Author: liubao <bi...@qq.com>
AuthorDate: Wed Feb 26 17:59:25 2020 +0800

    add more details about upgrading
---
 .../docs/featured-topics/upgrading/1_3_0T2_0_0.md  | 28 ++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/upgrading/1_3_0T2_0_0.md b/java-chassis-reference/zh_CN/docs/featured-topics/upgrading/1_3_0T2_0_0.md
index 1d659c6..9dce8f9 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/upgrading/1_3_0T2_0_0.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/upgrading/1_3_0T2_0_0.md
@@ -65,6 +65,23 @@ public class SpecialNameModel {
 可以将这些接口定义到不同的类中, 使用不一样的 Schema ID 进行区分,比如 `MySchemaHighwayOnly` , 
 `MySchemaRestOnly` , `MySchema` 。
 
+## 使用 Edge Service 场景下 Model 的缺省值
+
+假设业务应用采用 Edge Service 转发请求。 并且定义了一个接口, 有如下 Model 作为参数:
+
+```java
+public class Person {
+  private Integer age = 30;
+  private List<String> items;
+}
+```
+
+用户从浏览器调用这个接口, JSON 内容为 `{}` , 不传递任何内容, 1.3.0 版本得到的 age = null, items = null 。
+2.0.0 版本 age = 30, items 为空表, 不为 null 。 这个行为是由于 1.3.0 版本 Edge Service 会自动生成一个 Person
+类, 这个类没有缺省值, Edge Service 重新序列化, 造成服务端取到了 null。 弱类型契约没有中间类型, 序列化的结果
+和用户从浏览器传递过来的值一样。 
+
+
 ## RestTemplate的使用
 
 对于下面的 consumer 和 provider 代码:
@@ -249,16 +266,19 @@ Caused by: java.lang.NullPointerException
 
 下面是一些场景的问题:
 
-  * `CseContext.getInstance().getTransportManager().findTransport(Const.RESTFUL)` 编译失
-     败,修改为 `SCBEngine.getInstance().getTransportManager().findTransport(Const.RESTFUL)`
   * `router.routeWithRegex(regex).handler(CookieHandler.create())` 提示 CookieHandler deprecated,删除这行代码
      即可,新版本的vert.x已经默认提供了cookie处理。
   *   io.vertx.ext.web中的 `io.vertx.ext.web.Cookie已过时` , 修改
      为 `io.vertx.core.http.Cookie`
 
-2.0.0 删除了下面一些 `@Deprecated` 类
-
+2.0.0 一些可能被外部使用的内部接口调整
+  * `Invocation` 类删除了 `getArgs` 接口, 替换为 `getSwaggerArguments` , 同时新增了 `getInvocationArguments`,
+    关于这个变更的说明,请参考新特性介绍文章[弱类型契约](../features/weak-type-contrast.md)。  
   * 删除 `DynamicSchemaLoader` , 这个类早期版本提供出来是方便注册契约, 最新版本客户端契约发现可以通过服务中心
     完成,不再需要这样的功能。
+  * `CseContext.getInstance().getTransportManager().findTransport(Const.RESTFUL)` 修改
+    为 `SCBEngine.getInstance().getTransportManager().findTransport(Const.RESTFUL)`
+  * 测试代码可能使用 `CseContext.getInstance().getConsumerProviderManager().setTransport(microserviceName, transport)` , 修改
+    为 `ArchaiusUtils.setProperty("servicecomb.references.transport." + microserviceName, transport);`