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/incubator-servicecomb-docs.git
The following commit(s) were added to refs/heads/master by this push:
new 06b8241 补充客户端开发示例,并且按照要求进一步完善文档,用文字替换图片,增加一级标题。
06b8241 is described below
commit 06b8241db3f77039e51d445a15b2878de3706cda
Author: heyile <[email protected]>
AuthorDate: Fri Jul 6 17:05:51 2018 +0800
补充客户端开发示例,并且按照要求进一步完善文档,用文字替换图片,增加一级标题。
---
java-chassis-reference/zh_CN/SUMMARY.md | 1 +
.../zh_CN/build-consumer/circuit-breaker.md | 2 +
.../build-consumer/develop-consumer-using-rpc.md | 46 +++++++++++--
.../zh_CN/build-consumer/instance-isolation.md | 2 +
.../build-consumer/using-AsyncRestTemplate.md | 61 +++++++++++++++++
.../zh_CN/build-consumer/using-resttemplate.md | 74 +++++++++++++++++++-
.../zh_CN/build-consumer/with-contract.md | 2 +
.../zh_CN/build-provider/code-first.md | 2 +
.../zh_CN/build-provider/define-contract.md | 2 +
.../zh_CN/build-provider/jaxrs.md | 24 ++++++-
.../listen-address-and-publish-address.md | 2 +
.../zh_CN/build-provider/protocol.md | 2 +
.../zh_CN/build-provider/springmvc.md | 20 +++++-
.../zh_CN/build-provider/swagger-annotation.md | 2 +
.../zh_CN/build-provider/transparent-rpc.md | 78 ++++++++++++++--------
java-chassis-reference/zh_CN/introduction.md | 1 +
java-chassis-reference/zh_CN/start/architecture.md | 5 +-
.../zh_CN/start/development-environment.md | 40 ++++++++++-
java-chassis-reference/zh_CN/start/first-sample.md | 5 +-
19 files changed, 326 insertions(+), 45 deletions(-)
diff --git a/java-chassis-reference/zh_CN/SUMMARY.md
b/java-chassis-reference/zh_CN/SUMMARY.md
index e880be7..cd080e4 100644
--- a/java-chassis-reference/zh_CN/SUMMARY.md
+++ b/java-chassis-reference/zh_CN/SUMMARY.md
@@ -32,6 +32,7 @@
* [Access Log配置](build-provider/access-log-configuration.md)
* [开发服务消费者](catalog/build-consumer.md)
* [使用RestTemplate开发服务消费者](build-consumer/using-resttemplate.md)
+ * [使用AsynRestTemplate开发服务消费者](build-consumer/using-AsyncRestTemplate.md)
* [使用RPC方式开发服务消费者](build-consumer/develop-consumer-using-rpc.md)
* [使用服务契约](build-consumer/with-contract.md)
* [调用控制](build-consumer/invoke-control.md)
diff --git a/java-chassis-reference/zh_CN/build-consumer/circuit-breaker.md
b/java-chassis-reference/zh_CN/build-consumer/circuit-breaker.md
index 2adad0e..b9c727d 100644
--- a/java-chassis-reference/zh_CN/build-consumer/circuit-breaker.md
+++ b/java-chassis-reference/zh_CN/build-consumer/circuit-breaker.md
@@ -1,3 +1,5 @@
+# 熔断策略
+
## 场景描述
熔断策略是对ServiceComb熔断功能的设置,用户通过配置熔断策略可以指定在何种条件下ServiceComb框架将终止发送请求。
diff --git
a/java-chassis-reference/zh_CN/build-consumer/develop-consumer-using-rpc.md
b/java-chassis-reference/zh_CN/build-consumer/develop-consumer-using-rpc.md
index 1592bea..0900c5f 100644
--- a/java-chassis-reference/zh_CN/build-consumer/develop-consumer-using-rpc.md
+++ b/java-chassis-reference/zh_CN/build-consumer/develop-consumer-using-rpc.md
@@ -1,3 +1,5 @@
+# 使用RPC方式开发服务消费者
+
## 概念阐述
RPC开发方式允许用户通过在服务接口上标注注解来生成服务提供者代理,从而进行服务的调用。
@@ -6,10 +8,45 @@ RPC开发方式允许用户通过在服务接口上标注注解来生成服务
只需要声明一个服务接口类型的成员,并且使用@RpcReference标注该成员,声明依赖的微服务及schemaId,即可进行服务调用,示例代码如下:
+* 透明RPC 客户端代码示例
+
+```java
+@Component
+public class PojoConsumerMain {
+
+ @RpcReference(microserviceName = "hello", schemaId = "hello")
+ private static Hello hello;
+
+ @RpcReference(microserviceName = "hello", schemaId = "codeFirstCompute")
+ public static Compute compute;
+
+ public static void main(String[] args)
+ throws Exception {
+ init();
+ System.out.println(hello.sayHi("Java Chassis"));
+ Person person = new Person();
+ person.setName("ServiceComb/Java Chassis");
+ System.out.println(hello.sayHello(person));
+ System.out.println("a=1, b=2, result=" + compute.add(1, 2));
+ }
+
+ public static void init()
+ throws Exception {
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+```
+
+>在以上代码中,服务消费者已经取得了服务提供者的服务接口`Hello 、Compute`,并在代码中声明一个`Hello`类型 和 Compute
类型的成员。通过在`hello 和
compute`上使用`@RPCReference`注解指明微服务名称和schemaId,ServiceComb框架可以在程序启动时从服务中心获取到对应的服务提供者实例信息,并且生成一个代理注入到hello和compute中,用户可以像调用本地类一样调用远程服务。
+
+* JAX-RS 客户端示例代码 :
+
```java
@Component
-public class CodeFirstConsumerMain {
- @RpcReference(microserviceName = "codefirst", schemaId = "codeFirstHello")
+public class JaxrsConsumerMain {
+
+ @RpcReference(microserviceName = "jaxrs", schemaId = "jaxrsHello")
private static Hello hello;
public static void main(String[] args) throws Exception {
@@ -26,6 +63,5 @@ public class CodeFirstConsumerMain {
}
}
```
-
-在以上代码中,服务消费者已经取得了服务提供者的服务接口`Hello`,并在代码中声明一个`Hello`类型的成员。通过在`hello`上使用`@RPCReference`注解指明微服务名称和schemaId,ServiceComb框架可以在程序启动时从服务中心获取到对应的服务提供者实例信息,并且生成一个代理注入到hello中,用户可以像调用本地类一样调用远程服务。
-
+>我们发现上述代码, `JAX-RS` 客户端也是使用 `RPC` 的方式访问的服务端方法。 其实不管 provider
+是使用 `JAX-RS` 、 `Spring mvc` 还是 `RPC`,只需要在服务端定义的时候声明下 `RPC`
接口,客户端都可以通过RPC的方式远程远程访问。因此,服务端定义一个接口是很好的开发实践。
diff --git a/java-chassis-reference/zh_CN/build-consumer/instance-isolation.md
b/java-chassis-reference/zh_CN/build-consumer/instance-isolation.md
index ef940db..0a832e8 100644
--- a/java-chassis-reference/zh_CN/build-consumer/instance-isolation.md
+++ b/java-chassis-reference/zh_CN/build-consumer/instance-isolation.md
@@ -1,3 +1,5 @@
+# 实例级故障隔离
+
## 场景描述
实例级故障隔离功能允许在微服务的部分实例调用失败时,停止向故障实例发送请求,从而达到隔离故障实例的功能。
diff --git
a/java-chassis-reference/zh_CN/build-consumer/using-AsyncRestTemplate.md
b/java-chassis-reference/zh_CN/build-consumer/using-AsyncRestTemplate.md
new file mode 100644
index 0000000..2152d81
--- /dev/null
+++ b/java-chassis-reference/zh_CN/build-consumer/using-AsyncRestTemplate.md
@@ -0,0 +1,61 @@
+# 使用AsynRestTemplate开发服务消费者
+
+## 概念阐述
+
+AsyncRestTemplate 开发方式允许用户异步的进行服务调用。具体的业务流程和 restTemplate 类似,只是这里以异步的形式进行服务的调用。
+
+## 示例代码
+
+AsyncRestTemplate 实例通过 new CseAsyncRestTemplate()来创建和获取,再使用该实例通过自定义的 URL
进行服务调用。
+
+* Spring MVC 客户端代码示例
+
+```java
+
+@Component
+public class SpringmvcConsumerMain {
+ private static final Logger LOG =
LoggerFactory.getLogger(SpringmvcConsumerMain.class);
+
+ public static void main(String[] args) throws Exception {
+ init();
+ Person person = new Person();
+ person.setName("ServiceComb/Java Chassis");
+ //AsyncRestTemplate Consumer
+ CseAsyncRestTemplate cseAsyncRestTemplate = new CseAsyncRestTemplate();
+ ListenableFuture<ResponseEntity<String>> responseEntityListenableFuture =
cseAsyncRestTemplate
+ .postForEntity("cse://springmvc/springmvchello/sayhi?name=Java
Chassis", null, String.class);
+ ResponseEntity<String> responseEntity =
responseEntityListenableFuture.get();
+ System.out.println("AsyncRestTemplate Consumer sayHi services: " +
responseEntity.getBody());
+
+ HttpEntity<Person> entity = new HttpEntity<>(person);
+ ListenableFuture<ResponseEntity<String>> listenableFuture =
cseAsyncRestTemplate
+ .exchange("cse://springmvc/springmvchello/sayhello", HttpMethod.POST,
entity, String.class);
+ // ResponseEntity<String> responseEntity1 = listenableFuture.get();
+ // System.out.println("AsyncRestTemplate Consumer sayHello services: "
+ responseEntity1.getBody());
+ //设置回调函数
+ listenableFuture.addCallback(
+ new ListenableFutureCallback<ResponseEntity<String>>() {
+ @Override
+ public void onFailure(Throwable ex) {
+ LOG.error("AsyncResTemplate Consumer catched exception when
sayHello, ", ex);
+ }
+
+ @Override
+ public void onSuccess(ResponseEntity<String> result) {
+ System.out.println("AsyncRestTemplate Consumer sayHello services:
" + result.getBody());
+ }
+ });
+ }
+
+ public static void init() throws Exception {
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+
+```
+
+> 说明 :
+>
+> * URL 的格式和 RestTemplate 一样,具体可以参考 restTemplate
+> * 这里用自定义的 ListenableFuture
类来作为占位符,获取远程调用结束后可能获取的结果。同时也可以自定义回调函数,对可能返回的结果进行分批处理。
diff --git a/java-chassis-reference/zh_CN/build-consumer/using-resttemplate.md
b/java-chassis-reference/zh_CN/build-consumer/using-resttemplate.md
index 2b28d36..8f4528b 100644
--- a/java-chassis-reference/zh_CN/build-consumer/using-resttemplate.md
+++ b/java-chassis-reference/zh_CN/build-consumer/using-resttemplate.md
@@ -1,3 +1,5 @@
+# 使用RestTemplate开发服务消费者
+
## 概念阐述
RestTemplate是Spring提供的RESTful访问接口,ServiceComb提供该接口的实现类用于服务的调用。
@@ -10,6 +12,8 @@ RestTemplate是Spring提供的RESTful访问接口,ServiceComb提供该接口
RestTemplate实例通过调用`RestTemplateBuilder.create()`方法获取,再使用该实例通过自定义的URL进行服务调用,代码如下:
+* Spring MVC 客户端示例代码:
+
```java
@Component
public class SpringmvcConsumerMain {
@@ -34,10 +38,76 @@ public class SpringmvcConsumerMain {
}
```
+* JAX RS 客户端示例代码:
+
+```java
+
+@Component
+public class JaxrsConsumerMain {
+
+ public static void main(String[] args) throws Exception {
+ init();
+ //其他都类似spring MVC示例的客户端代码,注意如果服务端只接收 GET 请求,要使用方法 getForObject()
+ RestTemplate restTemplate = RestTemplateBuilder.create();
+ String result =
restTemplate.getForObject("cse://jaxrs/jaxrshello/saybye", String.class);
+ }
+
+ public static void init() throws Exception {
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+```
+
> 说明:
>
-> *
URL格式为:`cse://microserviceName/path?querystring`。以[用SpringMVC开发微服务](/用SpringMVC开发微服务)中定义的服务提供者为例,其微服务名称是springmvc,basePath是`/springmvchello`,那么URL中的microserviceName=`springmvc`,请求sayhi时的path=`springmvchello/sayhi`,所以示例代码中请求sayhi的URL是`cse://springmvc/springmvchello/sayhi?name=Java
Chassis`。
-> * 使用这种URL格式,ServiceComb框架会在内部进行服务发现、熔断容错等处理并最终将请求发送到服务提供者。
+> *
URL格式为:`cse://microserviceName/path?querystring`。以[用SpringMVC开发微服务](/用SpringMVC开发微服务)中定义的服务提供者为例,其微服务名称是springmvc,basePath是`/springmvchello`,那么URL中的microserviceName=`springmvc`,请求sayhi时的path=`springmvchello/sayhi`,所以示例代码中请求sayhi的URL是`cse://springmvc/springmvchello/sayhi?name=Java
Chassis`。具体代码示例如下 :
+
+
+```java
+@RestSchema(schemaId = "springmvcHello")
+@RequestMapping(path = "/springmvchello", produces =
MediaType.APPLICATION_JSON)
+//这里 path = “/springmvchello” 中的 springmvchello 就是 上述的basePath
+public class SpringmvcHelloImpl implements Hello {
+ @Override
+ @RequestMapping(path = "/sayhi", method = RequestMethod.POST)
+ public String sayHi(@RequestParam(name = "name") String name) {
+ return "Hello " + name;
+ }
+
+ @Override
+ @RequestMapping(path = "/sayhello", method = RequestMethod.POST)
+ public String sayHello(@RequestBody Person person) {
+ return "Hello person " + person.getName();
+ }
+}
+```
+> 下述代码是示例项目 [ SpringMVC
](https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/springmvc-sample)的
springmvc-provider 模块 中 resources 目录下 microservice.yaml
+
+```yaml
+APPLICATION_ID: springmvc-sample
+service_description:
+ name: springmvc # 这里就是定义的微服务名称
+ version: 0.0.2
+servicecomb:
+ service:
+ registry:
+ address: http://127.0.0.1:30100
+ rest:
+ address: 0.0.0.0:8080
+ highway:
+ address: 0.0.0.0:7070
+ handler:
+ chain:
+ Provider:
+ default: bizkeeper-provider
+cse:
+ service:
+ registry:
+ address: http://127.0.0.1:30100 #service center address
+```
+
+> * 使用上述这种URL格式,ServiceComb框架会在内部进行服务发现、熔断容错等处理并最终将请求发送到服务提供者。
diff --git a/java-chassis-reference/zh_CN/build-consumer/with-contract.md
b/java-chassis-reference/zh_CN/build-consumer/with-contract.md
index 4aec2bf..3cf5eaa 100644
--- a/java-chassis-reference/zh_CN/build-consumer/with-contract.md
+++ b/java-chassis-reference/zh_CN/build-consumer/with-contract.md
@@ -1,3 +1,5 @@
+# 使用服务契约
+
## 场景描述
当服务消费者调用服务提供者的服务时,需要注册服务契约。消费者有两种方式获取提供者的服务契约,一种是从服务的提供方离线获取契约文件,手工配置到项目中;另一种是从服务中心自动下载契约。
diff --git a/java-chassis-reference/zh_CN/build-provider/code-first.md
b/java-chassis-reference/zh_CN/build-provider/code-first.md
index 37c01c3..e1a0ea2 100644
--- a/java-chassis-reference/zh_CN/build-provider/code-first.md
+++ b/java-chassis-reference/zh_CN/build-provider/code-first.md
@@ -1,3 +1,5 @@
+# 使用隐式契约
+
## 概念阐述
隐式契约是指ServiceComb根据服务实现类自动生成的服务契约。
diff --git a/java-chassis-reference/zh_CN/build-provider/define-contract.md
b/java-chassis-reference/zh_CN/build-provider/define-contract.md
index 7e6cccc..31efa97 100644
--- a/java-chassis-reference/zh_CN/build-provider/define-contract.md
+++ b/java-chassis-reference/zh_CN/build-provider/define-contract.md
@@ -1,3 +1,5 @@
+# 定义服务契约
+
## 概念阐述
服务契约,指基于OpenAPI规范的微服务接口契约,是服务端与消费端对于接口的定义。java
chassis提供了两种方式定义契约:显示和隐式。显示契约用于开发者使用RPC方式开发代码,然后期望内部程序客户端使用RPC方式访问,同时期望浏览器、手机终端等通过HTTP访问后台接口场景,显示契约需要开发者在yaml文件中描述接口的访问方式。隐式契约中的契约完全由框架根据默认规则(对于RPC方式)或者Annotation(Spring
MVC和JAX RS方式)来生成运行时的契约,不需要准备单独的yaml文件。
diff --git a/java-chassis-reference/zh_CN/build-provider/jaxrs.md
b/java-chassis-reference/zh_CN/build-provider/jaxrs.md
index 8308d07..1ccada8 100644
--- a/java-chassis-reference/zh_CN/build-provider/jaxrs.md
+++ b/java-chassis-reference/zh_CN/build-provider/jaxrs.md
@@ -1,6 +1,7 @@
+# 用JAX-RS开发微服务
## 概念阐述
-ServiceComb支持开发者使用JAX-RS注解,使用JAX-RS模式开发服务。
+ServiceComb支持开发者使用JAX-RS注解,使用[JAX-RS](https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/jaxrs-sample)模式开发服务。
## 开发示例
@@ -39,6 +40,15 @@ public class JaxrsHelloImpl implements Hello {
public String sayHello(Person person) {
return "Hello person " + person.getName();
}
+ /**
+ * 这个方法是实现类特有的,因此对它的远程调用会有所不同.
+ * 具体可以参考 jaxrs-consumer
+ */
+ @Path("/saybye")
+ @GET
+ public String sayBye() {
+ return "Bye !";
+ }
}
```
@@ -58,6 +68,18 @@ public class JaxrsHelloImpl implements Hello {
</beans>
```
+### 步骤 4启动服务。
+
+```
+public class JaxrsProviderMain{
+
+ public static void main(String[] args) throws Exception {
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+```
+
## 涉及API
JAX-RS开发模式当前支持如下注解,所有注解的使用方法参考[JAX-RS官方文档](https://jax-rs-spec.java.net/nonav/2.0-rev-a/apidocs/index.html)。
diff --git
a/java-chassis-reference/zh_CN/build-provider/listen-address-and-publish-address.md
b/java-chassis-reference/zh_CN/build-provider/listen-address-and-publish-address.md
index 8431d2d..a31cd66 100644
---
a/java-chassis-reference/zh_CN/build-provider/listen-address-and-publish-address.md
+++
b/java-chassis-reference/zh_CN/build-provider/listen-address-and-publish-address.md
@@ -1,3 +1,5 @@
+# 服务监听地址和发布地址
+
### 概念阐述
在JavaChassis中,服务的监听地址和发布地址是两个独立的概念,可以独立配置:
diff --git a/java-chassis-reference/zh_CN/build-provider/protocol.md
b/java-chassis-reference/zh_CN/build-provider/protocol.md
index ea9b9b7..6e28c80 100644
--- a/java-chassis-reference/zh_CN/build-provider/protocol.md
+++ b/java-chassis-reference/zh_CN/build-provider/protocol.md
@@ -1,3 +1,5 @@
+# 通信协议
+
### 概念阐述
ServiceComb实现了两种网络通道,包括REST和Highway,均支持TLS加密传输。其中,REST网络通道将服务以标准RESTful形式发布,调用端兼容直接使用http
client使用标准RESTful形式进行调用。
diff --git a/java-chassis-reference/zh_CN/build-provider/springmvc.md
b/java-chassis-reference/zh_CN/build-provider/springmvc.md
index 94b616b..1bc428d 100644
--- a/java-chassis-reference/zh_CN/build-provider/springmvc.md
+++ b/java-chassis-reference/zh_CN/build-provider/springmvc.md
@@ -1,6 +1,8 @@
+# 用SpringMVC 开发微服务
+
## 概念阐述
-ServiceComb支持SpringMVC注解,允许使用SpringMVC风格开发微服务。
+ServiceComb支持SpringMVC注解,允许使用SpringMVC风格开发微服务。建议参照着项目
[SpringMVC](https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/springmvc-sample)进行详细阅读
## 开发示例
@@ -41,7 +43,7 @@ public class SpringmvcHelloImpl implements Hello {
### 步骤 3发布服务
-在`resources/META-INF/spring`目录下创建`springmvcHello.bean.xml`文件,命名规则为`\*.bean.xml`,配置spring进行服务扫描的base-package,文件内容如下:
+在`resources/META-INF/spring`目录下创建`springmvcprovider.bean.xml`文件,命名规则为`\*.bean.xml`,配置spring进行服务扫描的base-package,文件内容如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -56,6 +58,20 @@ public class SpringmvcHelloImpl implements Hello {
</beans>
```
+### 步骤 4启动provider 服务
+
+进行主要相关配置初始化。
+
+```java
+public class SpringmvcProviderMain {
+
+ public static void main(String[] args) throws Exception {
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+```
+
## 涉及API
Spring
MVC开发模式当前支持org.springframework.web.bind.annotation包下的如下注解,所有注解的使用方法参考[Spring
MVC官方文档](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)。
diff --git a/java-chassis-reference/zh_CN/build-provider/swagger-annotation.md
b/java-chassis-reference/zh_CN/build-provider/swagger-annotation.md
index 583b053..49d9f1e 100644
--- a/java-chassis-reference/zh_CN/build-provider/swagger-annotation.md
+++ b/java-chassis-reference/zh_CN/build-provider/swagger-annotation.md
@@ -1,3 +1,5 @@
+# 使用 Swagger 注解
+
## 概念阐述
Swagger提供了一套注解用于描述接口契约,用户使用注解,可以在代码中增加对于契约的描述信息。ServiceComb支持其中的部分注解。
diff --git a/java-chassis-reference/zh_CN/build-provider/transparent-rpc.md
b/java-chassis-reference/zh_CN/build-provider/transparent-rpc.md
index 0d61261..ac378f7 100644
--- a/java-chassis-reference/zh_CN/build-provider/transparent-rpc.md
+++ b/java-chassis-reference/zh_CN/build-provider/transparent-rpc.md
@@ -1,3 +1,5 @@
+# 用透明RPC开发微服务
+
## 概念阐述
透明RPC开发模式是一种基于接口和接口实现的开发模式,服务的开发者不需要使用Spring MVC和JAX-RS注解。
@@ -15,6 +17,14 @@ public interface Hello {
String sayHi(String name);
String sayHello(Person person);
}
+
+public interface Compute {
+ int add(int a, int b);
+ int multi(int a, int b);
+ int sub(int a, int b);
+ int divide(int a, int b);
+}
+
```
@@ -23,7 +33,13 @@ public interface Hello {
Hello的服务实现如下:
+> **说明**:
+> 每一个服务接口都需要定义一个schema声明。
+
+* 在接口Hello 和 Compute 的实现类上使用@RpcSchema注解定义schema,代码如下:
+
```java
+@RpcSchema(schemaId = "hello")
public class HelloImpl implements Hello {
@Override
public String sayHi(String name) {
@@ -35,13 +51,39 @@ public class HelloImpl implements Hello {
return "Hello person " + person.getName();
}
}
+
+@RpcSchema(schemaId = "codeFirstCompute")
+public class CodeFirstComputeImpl implements Compute {
+ @Override
+ public int add(int a, int b) {
+ return a + b;
+ }
+
+ @Override
+ public int multi(int a, int b) {
+ return a * b;
+ }
+
+ @Override
+ public int sub(int a, int b) {
+ return a - b;
+ }
+
+ @Override
+ public int divide(int a, int b) {
+ if (b != 0) {
+ return a / b;
+ }
+ return 0;
+ }
+}
```
### 步骤 3发布服务
* 通过配置文件方式
-在resources/META-INF/spring目录下创建pojoHello.bean.xml文件,在文件中声明schema,文件内容如下:
+在resources/META-INF/spring目录下的pojoHello.bean.xml文件中,配置Spring进行服务扫描的base-package,文件内容如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -51,44 +93,24 @@ public class HelloImpl implements Hello {
xmlns:context=" http://www.springframework.org/schema/context "
xsi:schemaLocation=" http://www.springframework.org/schema/beans
classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.huawei.com/schema/paas/cse/rpc
classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
- <cse:rpc-schema schema-id="pojoHello"
implementation="org.apache.servicecomb.samples.pojo.provider.PojoHelloImpl"/>
+ <context:component-scan
base-package="org.apache.servicecomb.samples.pojo.provider"/>
</beans>
```
-> **说明**:
-> 每一个服务接口都需要定义一个schema声明。
-
-* 通过注解配置的开发方式
-
-1. 定义服务接口,与使用Spring xml的方式相同。
-2. 实现服务,与使用Spring xml的方式相同。
-3. 发布服务。在接口Hello的实现类上使用@RpcSchema注解定义schema,代码如下:
+### 步骤 4 启动服务
```java
-import org.apache.servicecomb.provider.pojo.RpcSchema;
+public class PojoProviderMain {
-@RpcSchema(schemaId = "pojoHello")
-public class HelloImpl implements Hello {
- // some code omitted
+ public static void main(String[] args) throws Exception {
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
}
```
-在resources/META-INF/spring目录下的pojoHello.bean.xml文件中,配置Spring进行服务扫描的base-package,文件内容如下:
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance "
- xmlns:p=" http://www.springframework.org/schema/p " xmlns:util="
http://www.springframework.org/schema/util "
- xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
- xmlns:context=" http://www.springframework.org/schema/context "
- xsi:schemaLocation=" http://www.springframework.org/schema/beans
classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.huawei.com/schema/paas/cse/rpc
classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
-
- <context:component-scan
base-package="org.apache.servicecomb.samples.pojo.provider"/>
-</beans>
-```
-
> **说明**:
> 与Spring MVC开发模式和JAX-RS开发模式不同的是,透明RPC开发模式使用的注解是`@RpcSchema`而非`@RestSchema`。
diff --git a/java-chassis-reference/zh_CN/introduction.md
b/java-chassis-reference/zh_CN/introduction.md
index 76102a4..c25475d 100644
--- a/java-chassis-reference/zh_CN/introduction.md
+++ b/java-chassis-reference/zh_CN/introduction.md
@@ -1,3 +1,4 @@
+# 概述
Apache ServiceComb (incubating) Java Chassis 给开发者提供一个快速构建微服务的JAVA SDK。它包含如下特性:
* 多种开发风格,REST(JAX-RS、Spring MVC)和RPC
diff --git a/java-chassis-reference/zh_CN/start/architecture.md
b/java-chassis-reference/zh_CN/start/architecture.md
index 813b63f..33c5b3a 100644
--- a/java-chassis-reference/zh_CN/start/architecture.md
+++ b/java-chassis-reference/zh_CN/start/architecture.md
@@ -1,3 +1,5 @@
+# 微服务系统架构
+
## 框架概述
## **主要设计意图**
@@ -23,6 +25,3 @@
| 运行模型 | handler-loadbalance | 是 | 负载均衡模块。提供各种路由策略和配置方法。一般客户端使用。 |
| 运行模型 | handler-bizkeeper | 是 | 和服务治理相关的功能,比如隔离、熔断、容错。 |
| 运行模型 | handler-tracing | 是 | 调用链跟踪模块,对接监控系统,吐出打点数据。 |
-
-
-
diff --git a/java-chassis-reference/zh_CN/start/development-environment.md
b/java-chassis-reference/zh_CN/start/development-environment.md
index 50e07ee..fa5a25e 100644
--- a/java-chassis-reference/zh_CN/start/development-environment.md
+++ b/java-chassis-reference/zh_CN/start/development-environment.md
@@ -1,6 +1,6 @@
-
+# 安装本地开发环境
-应用开发环境所需安装的工具包括JDK、Maven和Eclipse。如果已经安装了这些开发工具,请跳过本节。
+应用开发环境所需安装的工具包括JDK、Maven、Eclipse 和 IDEA 。如果已经安装了这些开发工具,请跳过本节。
## JDK约束及安装步骤
@@ -53,7 +53,18 @@ e.(可选)设置本地仓库路径,用于保存从远程仓库获取的插
这里以路径D:\maven\repository为例。在/conf中找到settings.xml文件,设置localRepository为D:\maven\repository
-f.结果验证
+f. (可选)要想项目能够快速的下载各种依赖,建议配置下中心仓库。
+
+```
+ <mirror>
+ <id>mirrorId</id>
+ <mirrorOf>*</mirrorOf>
+ <name>Mirror of central repository.</name>
+ <url>http://maven.huaweicse.com/nexus/content/groups/public</url>
+ </mirror>
+```
+
+g.结果验证
使用mvn -version命令验证是否安装成功,windows环境下回显如下:
@@ -88,3 +99,26 @@ c.(可选)将之前Maven安装中介绍的插件m2eclipse解压到Eclipse安
d.启动Eclipse,配置jre、maven settings以及默认编码格式为utf-8。
+
+
+## IDEA安装
+
+### **前提条件**
+
+a.JDK已经安装。
+
+b.Maven已经安装。
+
+### **安装步骤**
+
+a. 在官方网站下载 IDEA 安装包,收费版或者社区版的按个人需求。
+
+b. 设置编码格式都为 utf-8。
+
+打开IDEA,选择 File -> Settings -> Editor -> File Encoding
+把 project Encoding 和 default encoding for properties files 改为 utf-8。
+
+c. 设置maven 配置
+
+打开IDEA,选择 File -> Settings -> Build,Execution,Deployment -> Bulid Tools ->
Maven
+注意配置 Maven home directory 和 User settings file
diff --git a/java-chassis-reference/zh_CN/start/first-sample.md
b/java-chassis-reference/zh_CN/start/first-sample.md
index 0c5cecc..3ec45f4 100644
--- a/java-chassis-reference/zh_CN/start/first-sample.md
+++ b/java-chassis-reference/zh_CN/start/first-sample.md
@@ -1,6 +1,9 @@
+# 开发第一个微服务
+
开发者可以通过两种方式快速构建一个项目:
-* 下载samples项目
+* 下载samples项目。建议把整个项目都下载下来,按照例子[ SpringMVC
](https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/springmvc-sample)或者
[JAX
RS](https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/jaxrs-sample)进行初始化配置。
+
* 使用archetypes生成项目
开始之前,开发者需要先选择熟悉的开发方式,目前有3种方式可供选择: