760
微信
生產者實現服務__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲
生產者將實現服務接口以提供具體實現,除了代碼實現的工作之外,由於 HSF 是基於 Spring 框架來實現的,所以還需要再定義服務發布的 XML 文件。
代碼實現服務接口
在 Demo 工程的 itemcenter 中可看到具體的示例:
package com.alibaba.edas.carshop.itemcenter;
public class ItemServiceImpl implements ItemService {
@Override
public Item getItemById( long id ) {
Item car = new Item();
car.setItemId( 1l );
car.setItemName( "Mercedes Benz" );
return car;
}
@Override
public Item getItemByName( String name ) {
Item car = new Item();
car.setItemId( 1l );
car.setItemName( "Mercedes Benz" );
return car;
}
}
服務配置
上述例子主要實現了 com.alibaba.edas.carshop.itemcenter.ItemService
,並在兩個方法中返回了一個 Item
對象,代碼開發好之後,除了必要的 web.xml 中的 Spring 常規配置,我們還需要增加相應的 Maven 依賴,同時在 Spring 配置文件使用<hsf />
標簽注冊並發布該服務。具體內容如下:
在 pom.xml 中添加如下 Maven 依賴的內容:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba.edas.carshop</groupId>
<artifactId>itemcenter-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>2.5.6(及其以上版本)</version>
</dependency>
<dependency>
<groupId>com.alibaba.edas</groupId>
<artifactId>edas-sdk</artifactId>
<version>1.5.0</version>
</dependency>
</dependencies>
增加 Spring 關於 HSF 服務的配置,Demo 工程 HSF 配置文件 /resources/hsf-provider-beans.xml 內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:hsf="https://www.taobao.com/hsf"
xmlns="https://www.springframework.org/schema/beans"
xsi:schemaLocation="https://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans-2.5.xsd
https://www.taobao.com/hsf
https://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">
<!-- 定義實現該服務的具體實現 -->
<bean id="itemService" class="com.alibaba.edas.carshop.itemcenter.ItemServiceImpl" />
<!-- 用 hsf:provider 標簽表明提供一個服務生產者 -->
<hsf:provider id=“itemServiceProvider"
<!-- 用 interface 屬性說明該服務為此類的一個實現 -->
interface=“com.alibaba.edas.carshop.itemcenter.ItemService"
<!-- 此服務具體實現的 spring 對象 -->
ref=“itemService"
<!-- 發布該服務的版本號,可任意指定,默認為 1.0.0 -->
version=“1.0.0"
<!-- 服務分組,在生產環境中必須全局唯一,且在 EDAS 控製台上的 服務市場 => 服務分組中必須存在,否則會使服務發布不成功 -->
group=“testHSFGroup-09-04“>
</hsf:provider>
</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 配置 |
標簽配置示例:
<bean id="impl" class="com.taobao.edas.service.impl.SimpleServiceImpl" />
<hsf:provider id="simpleService" interface="com.taobao.edas.service.SimpleService"
ref="impl" version="1.0.1" group="test1" clientTimeout="3000" enableTXC="true"
serializeType="hessian">
<hsf:methodSpecials>
<hsf:methodSpecial name="sum" timeout="2000" />
</hsf:methodSpecials>
</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
上一篇:
定義服務接口__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲
下一篇:
消費者訂閱服務__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲
查看鎖等待__鎖等待管理_性能管理_用戶指南(RDBMS)_數據管理-阿裏雲
申請解鎖__故障處理_雲服務器 ECS-阿裏雲
GetLogs__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
用戶及權限管理__數據庫管理語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
如何設置域名隱私保護服務?__域名安全_管理操作_域名-阿裏雲
全方位安全服務__使用金融雲產品_金融雲-阿裏雲
申請資源__快速入門_消息隊列 MQ-阿裏雲
修改本機係統Hosts文件來測試Web應用防火牆__常見問題_常見問題_Web 應用防火牆-阿裏雲
實例狀態圖__附錄_API 參考_雲服務器 ECS-阿裏雲
重置雲虛擬主機控製台密碼和FTP密碼__管理控製台_使用指南_雲虛機主機-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲