diff --git a/basic/pom.xml b/basic/pom.xml
index 946c2c4..2f21051 100644
--- a/basic/pom.xml
+++ b/basic/pom.xml
@@ -27,7 +27,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <servicecomb.version>2.6.0</servicecomb.version>
+    <servicecomb.version>2.8.2</servicecomb.version>
   </properties>
 
   <dependencyManagement>
diff --git a/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/TestApiOperation.java b/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/TestApiOperation.java
index 67e7a44..b1fd5dd 100644
--- a/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/TestApiOperation.java
+++ b/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/TestApiOperation.java
@@ -40,8 +40,8 @@
   @Test
   public void jaxrs_TestMediaType1() {
     Operation operation = getOperation("apiOperationJaxrsSchema", "testMediaType1");
-    MatcherAssert.assertThat(operation.getConsumes(), Matchers.contains(MediaType.APPLICATION_JSON));
-    MatcherAssert.assertThat(operation.getProduces(), Matchers.contains(MediaType.APPLICATION_XML));
+    MatcherAssert.assertThat(operation.getConsumes(), Matchers.contains(MediaType.TEXT_PLAIN));
+    MatcherAssert.assertThat(operation.getProduces(), Matchers.contains(MediaType.TEXT_HTML));
   }
 
   @Test
@@ -54,8 +54,8 @@
   @Test
   public void springMVC_TestMediaType1() {
     Operation operation = getOperation("apiOperationSpringMVCSchema", "testMediaType1");
-    MatcherAssert.assertThat(operation.getConsumes(), Matchers.contains(MediaType.APPLICATION_JSON));
-    MatcherAssert.assertThat(operation.getProduces(), Matchers.contains(MediaType.APPLICATION_XML));
+    MatcherAssert.assertThat(operation.getConsumes(), Matchers.contains(MediaType.TEXT_PLAIN));
+    MatcherAssert.assertThat(operation.getProduces(), Matchers.contains(MediaType.TEXT_HTML));
   }
 
   @Test
diff --git a/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java b/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java
index 8dc4f49..8b13bfc 100644
--- a/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java
+++ b/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestAnnotatedAttribute.java
@@ -127,7 +127,7 @@
       Assertions.assertEquals(400, e.getStatusCode());
       Assertions.assertTrue(
           e.getMessage()
-              .contains("InvocationException: code=400;msg=CommonExceptionData [message=Parameter is not valid"));
+              .contains("InvocationException: code=400;msg=CommonExceptionData [message=Parameter is required."));
     }
     headers.add(HttpHeaders.COOKIE, "input1=default1");
     requestEntity = new HttpEntity<>(headers);
@@ -142,7 +142,7 @@
       Assertions.assertEquals(400, e.getStatusCode());
       Assertions.assertTrue(
           e.getMessage()
-              .contains("InvocationException: code=400;msg=CommonExceptionData [message=Parameter is not valid"));
+              .contains("InvocationException: code=400;msg=CommonExceptionData [message=Parameter is required."));
     }
     headers.add(HttpHeaders.COOKIE, "input=joker");
     requestEntity = new HttpEntity<>(headers);
diff --git a/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDefaultValue.java b/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDefaultValue.java
index 55f3383..5616709 100644
--- a/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDefaultValue.java
+++ b/java-chassis-integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDefaultValue.java
@@ -226,7 +226,7 @@
       Assertions.assertEquals("required is true, throw exception", "not throw exception");
     } catch (InvocationException e) {
       Assertions.assertEquals(400, e.getStatusCode());
-      Assertions.assertTrue(e.getMessage().contains("Parameter is not valid"));
+      Assertions.assertTrue(e.getMessage().contains("Parameter is required."));
     }
   }
 
@@ -269,7 +269,7 @@
       Assertions.assertEquals("required is true, throw exception", "not throw exception");
     } catch (InvocationException e) {
       Assertions.assertEquals(400, e.getStatusCode());
-      Assertions.assertTrue(e.getMessage().contains("Parameter is not valid"));
+      Assertions.assertTrue(e.getMessage().contains("Parameter is required."));
     }
   }
 
@@ -313,7 +313,7 @@
       Assertions.assertEquals("required is true, throw exception", "not throw exception");
     } catch (InvocationException e) {
       Assertions.assertEquals(400, e.getStatusCode());
-      Assertions.assertTrue(e.getMessage().contains("Parameter is not valid"));
+      Assertions.assertTrue(e.getMessage().contains("Parameter is required."));
     }
   }
 
diff --git a/java-chassis-integration-tests/pom.xml b/java-chassis-integration-tests/pom.xml
index d7dc22b..87ab191 100644
--- a/java-chassis-integration-tests/pom.xml
+++ b/java-chassis-integration-tests/pom.xml
@@ -21,17 +21,17 @@
   <parent>
     <groupId>org.apache.servicecomb</groupId>
     <artifactId>java-chassis-parent</artifactId>
-    <version>2.8.1</version>
+    <version>2.8.2</version>
   </parent>
 
   <properties>
-    <revision>2.8.1</revision>
+    <revision>2.8.2</revision>
   </properties>
 
   <repositories>
     <repository>
       <id>servicecomb-staging</id>
-      <url>https://repository.apache.org/content/repositories/orgapacheservicecomb-1520</url>
+      <url>https://repository.apache.org/content/repositories/orgapacheservicecomb-1522</url>
       <releases>
         <enabled>true</enabled>
       </releases>
diff --git a/porter_lightweight/api/common/endpoint/pom.xml b/porter_lightweight/api/common/endpoint/pom.xml
index 5950ae5..27b91dd 100644
--- a/porter_lightweight/api/common/endpoint/pom.xml
+++ b/porter_lightweight/api/common/endpoint/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>common-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>common-api-endpoint</artifactId>
diff --git a/porter_lightweight/api/common/pom.xml b/porter_lightweight/api/common/pom.xml
index 8462680..41f0bb8 100644
--- a/porter_lightweight/api/common/pom.xml
+++ b/porter_lightweight/api/common/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>common-api</artifactId>
diff --git a/porter_lightweight/api/common/service/pom.xml b/porter_lightweight/api/common/service/pom.xml
index 90d72e4..ce8dea5 100644
--- a/porter_lightweight/api/common/service/pom.xml
+++ b/porter_lightweight/api/common/service/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>common-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>common-api-service</artifactId>
diff --git a/porter_lightweight/api/file-service/endpoint/pom.xml b/porter_lightweight/api/file-service/endpoint/pom.xml
index 4c41f2d..d581872 100644
--- a/porter_lightweight/api/file-service/endpoint/pom.xml
+++ b/porter_lightweight/api/file-service/endpoint/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>file-service-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>file-service-api-endpoint</artifactId>
diff --git a/porter_lightweight/api/file-service/pom.xml b/porter_lightweight/api/file-service/pom.xml
index ee32f09..eb9f6ce 100644
--- a/porter_lightweight/api/file-service/pom.xml
+++ b/porter_lightweight/api/file-service/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>file-service-api</artifactId>
diff --git a/porter_lightweight/api/file-service/service/pom.xml b/porter_lightweight/api/file-service/service/pom.xml
index 9a9cac4..326bf08 100644
--- a/porter_lightweight/api/file-service/service/pom.xml
+++ b/porter_lightweight/api/file-service/service/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>file-service-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>file-service-api-service</artifactId>
diff --git a/porter_lightweight/api/pom.xml b/porter_lightweight/api/pom.xml
index f941ef9..079cc34 100644
--- a/porter_lightweight/api/pom.xml
+++ b/porter_lightweight/api/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-application</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>porter-api</artifactId>
diff --git a/porter_lightweight/api/user-service/endpoint/pom.xml b/porter_lightweight/api/user-service/endpoint/pom.xml
index 90e4d7d..2feaf00 100644
--- a/porter_lightweight/api/user-service/endpoint/pom.xml
+++ b/porter_lightweight/api/user-service/endpoint/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>user-service-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>user-service-api-endpoint</artifactId>
diff --git a/porter_lightweight/api/user-service/pom.xml b/porter_lightweight/api/user-service/pom.xml
index fcabb12..8ef9333 100644
--- a/porter_lightweight/api/user-service/pom.xml
+++ b/porter_lightweight/api/user-service/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>user-service-api</artifactId>
diff --git a/porter_lightweight/api/user-service/service/pom.xml b/porter_lightweight/api/user-service/service/pom.xml
index d0d034d..e1559a7 100644
--- a/porter_lightweight/api/user-service/service/pom.xml
+++ b/porter_lightweight/api/user-service/service/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>user-service-api</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>user-service-api-service</artifactId>
diff --git a/porter_lightweight/file-service/pom.xml b/porter_lightweight/file-service/pom.xml
index be81dc7..855d094 100644
--- a/porter_lightweight/file-service/pom.xml
+++ b/porter_lightweight/file-service/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-application</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>porter-file-service</artifactId>
diff --git a/porter_lightweight/gateway-service/pom.xml b/porter_lightweight/gateway-service/pom.xml
index eeb8393..db57431 100644
--- a/porter_lightweight/gateway-service/pom.xml
+++ b/porter_lightweight/gateway-service/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-application</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>porter-gateway-service</artifactId>
diff --git a/porter_lightweight/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java b/porter_lightweight/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java
index 391fd2b..c27e93c 100644
--- a/porter_lightweight/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java
+++ b/porter_lightweight/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java
@@ -46,7 +46,7 @@
 
     EdgeInvocation invoker = new EdgeInvocation() {
       // Authentication. Notice: adding context must after setContext or will override by network
-      protected void setContext() throws Exception {
+      public void setContext() throws Exception {
         super.setContext();
         // get session id from header and cookie for debug reasons
         String sessionId = context.request().getHeader("session-id");
diff --git a/porter_lightweight/pom.xml b/porter_lightweight/pom.xml
index a3450a4..4d0e41c 100644
--- a/porter_lightweight/pom.xml
+++ b/porter_lightweight/pom.xml
@@ -22,7 +22,7 @@
 
   <groupId>org.apache.servicecomb.samples.porter</groupId>
   <artifactId>porter-application</artifactId>
-  <version>2.6.0</version>
+  <version>2.8.2</version>
   <packaging>pom</packaging>
 
   <properties>
diff --git a/porter_lightweight/user-service/pom.xml b/porter_lightweight/user-service/pom.xml
index d175f6d..a65eb11 100644
--- a/porter_lightweight/user-service/pom.xml
+++ b/porter_lightweight/user-service/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.servicecomb.samples.porter</groupId>
     <artifactId>porter-application</artifactId>
-    <version>2.6.0</version>
+    <version>2.8.2</version>
   </parent>
 
   <artifactId>porter-user-service</artifactId>
diff --git a/porter_springboot/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java b/porter_springboot/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java
index 391fd2b..c27e93c 100644
--- a/porter_springboot/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java
+++ b/porter_springboot/gateway-service/src/main/java/org/apache/servicecomb/samples/porter/gateway/ApiDispatcher.java
@@ -46,7 +46,7 @@
 
     EdgeInvocation invoker = new EdgeInvocation() {
       // Authentication. Notice: adding context must after setContext or will override by network
-      protected void setContext() throws Exception {
+      public void setContext() throws Exception {
         super.setContext();
         // get session id from header and cookie for debug reasons
         String sessionId = context.request().getHeader("session-id");
diff --git a/porter_springboot/pom.xml b/porter_springboot/pom.xml
index 86d25ea..742dd54 100644
--- a/porter_springboot/pom.xml
+++ b/porter_springboot/pom.xml
@@ -27,7 +27,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <servicecomb.version>2.6.0</servicecomb.version>
+    <servicecomb.version>2.8.2</servicecomb.version>
   </properties>
 
   <dependencyManagement>
