閱讀760 返回首頁    go 微信


生產者實現服務__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲

生產者將實現服務接口以提供具體實現,除了代碼實現的工作之外,由於 HSF 是基於 Spring 框架來實現的,所以還需要再定義服務發布的 XML 文件。

代碼實現服務接口

在 Demo 工程的 itemcenter 中可看到具體的示例:

  1. package com.alibaba.edas.carshop.itemcenter;
  2. public class ItemServiceImpl implements ItemService {
  3. @Override
  4. public Item getItemById( long id ) {
  5. Item car = new Item();
  6. car.setItemId( 1l );
  7. car.setItemName( "Mercedes Benz" );
  8. return car;
  9. }
  10. @Override
  11. public Item getItemByName( String name ) {
  12. Item car = new Item();
  13. car.setItemId( 1l );
  14. car.setItemName( "Mercedes Benz" );
  15. return car;
  16. }
  17. }

服務配置

上述例子主要實現了 com.alibaba.edas.carshop.itemcenter.ItemService,並在兩個方法中返回了一個 Item 對象,代碼開發好之後,除了必要的 web.xml 中的 Spring 常規配置,我們還需要增加相應的 Maven 依賴,同時在 Spring 配置文件使用<hsf />標簽注冊並發布該服務。具體內容如下:

  1. 在 pom.xml 中添加如下 Maven 依賴的內容:

    1. <dependencies>
    2. <dependency>
    3. <groupId>javax.servlet</groupId>
    4. <artifactId>servlet-api</artifactId>
    5. <version>2.5</version>
    6. <scope>provided</scope>
    7. </dependency>
    8. <dependency>
    9. <groupId>com.alibaba.edas.carshop</groupId>
    10. <artifactId>itemcenter-api</artifactId>
    11. <version>1.0.0-SNAPSHOT</version>
    12. </dependency>
    13. <dependency>
    14. <groupId>org.springframework</groupId>
    15. <artifactId>spring-web</artifactId>
    16. <version>2.5.6(及其以上版本)</version>
    17. </dependency>
    18. <dependency>
    19. <groupId>com.alibaba.edas</groupId>
    20. <artifactId>edas-sdk</artifactId>
    21. <version>1.5.0</version>
    22. </dependency>
    23. </dependencies>
  2. 增加 Spring 關於 HSF 服務的配置,Demo 工程 HSF 配置文件 /resources/hsf-provider-beans.xml 內容如下:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:hsf="https://www.taobao.com/hsf"
    4. xmlns="https://www.springframework.org/schema/beans"
    5. xsi:schemaLocation="https://www.springframework.org/schema/beans
    6. https://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    7. https://www.taobao.com/hsf
    8. https://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">
    9. <!-- 定義實現該服務的具體實現 -->
    10. <bean id="itemService" class="com.alibaba.edas.carshop.itemcenter.ItemServiceImpl" />
    11. <!-- 用 hsf:provider 標簽表明提供一個服務生產者 -->
    12. <hsf:provider id=“itemServiceProvider"
    13. <!-- 用 interface 屬性說明該服務為此類的一個實現 -->
    14. interface=“com.alibaba.edas.carshop.itemcenter.ItemService"
    15. <!-- 此服務具體實現的 spring 對象 -->
    16. ref=“itemService"
    17. <!-- 發布該服務的版本號,可任意指定,默認為 1.0.0 -->
    18. version=“1.0.0"
    19. <!-- 服務分組,在生產環境中必須全局唯一,且在 EDAS 控製台上的 服務市場 => 服務分組中必須存在,否則會使服務發布不成功 -->
    20. group=“testHSFGroup-09-04“>
    21. </hsf:provider>
    22. </beans>

生產者配置屬性清單

關於 HSF 生產者的屬性配置,除了上述內容提到的之外,還有如下的內容可供選擇:

屬性 描述
interface interface 必須配置 [String],為服務對外提供的接口
version version 為可選配置 [String],含義為服務的版本,默認為 1.0.0
group serviceGroup 為可選配置 [String],含義為服務所屬的組別,以便按組別來管理服務的配置,默認為 HSF
clientTimeout 該配置對接口中的所有方法生效,但是如果客戶端通過 MethodSpecial 屬性對某方法配置了超時時間,則該方法的超時時間以客戶端配置為準,其他方法不受影響,還是以服務端配置為準
serializeType serializeType 為可選配置 [String(hessian|java)],含義為序列化類型,默認為 hessian
corePoolSize 單獨針對這個服務設置核心線程池,是從公用線程池這個大蛋糕裏切一塊下來
maxPoolSize 單獨針對這個服務設置線程池,是從公用線程池這個大蛋糕裏切一塊下來
enableTXC 開啟分布式事務 TXC
ref ref 必須配置 [ref],為需要發布為 HSF 服務的 Spring Bean ID
methodSpecials methodSpecials 為可選配置,用於為方法單獨配置超時(單位 ms),這樣接口中的方法可以采用不同的超時時間,該配置優先級高於上麵的 clientTimeout 的超時配置,低於客戶端的 methodSpecials 配置

標簽配置示例:

  1. <bean id="impl" class="com.taobao.edas.service.impl.SimpleServiceImpl" />
  2. <hsf:provider id="simpleService" interface="com.taobao.edas.service.SimpleService"
  3. ref="impl" version="1.0.1" group="test1" clientTimeout="3000" enableTXC="true"
  4. serializeType="hessian">
  5. <hsf:methodSpecials>
  6. <hsf:methodSpecial name="sum" timeout="2000" />
  7. </hsf:methodSpecials>
  8. </hsf:provider>

開發環境發布服務

完成代碼和配置的開發任務之後,在 Eclipse 和 IDEA 中,可直接以 Ali-Tomcat 運行該服務(具體請參照文檔 IDE 運行時啟動配置,運行成功後,可在文檔開發環境搭建中搭建的 ConfigCenter 中查詢到所發布的服務。

服務提供者額外的 JVM 啟動參數

在服務的提供者中,有一些額外的啟動參數來改變 HSF 的行為,具體如下:

屬性 描述
-Dhsf.server.port 指定 HSF 的啟動服務綁定端口,默認為 12200
-Dhsf.serializer 指定 HSF 的序列化方式,默認值為 hessian
-Dhsf.server.max.poolsize 指定 HSF 的服務端最大線程池大小,默認值為 600
-Dhsf.server.min.poolsize 指定 HSF 的服務端最小線程池大小。默認值為 50

最後更新:2016-11-23 16:04:18

  上一篇:go 定義服務接口__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲
  下一篇:go 消費者訂閱服務__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲