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-阿里云