服务框架 HSF 使用与配置 一江更新时间 : 目录 HSF 常用 OPS 和开发工具介绍... 1 HSF 的使用和配置... 2 下载和安装 HSF... 2 服务开发与部署... 5 服务查询 服务调用 HSFUNIT 测试包的使用 HSF

Similar documents
Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

<!-- import outer proper

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

Eclipse C C++, or

在Spring中使用Kafka:Producer篇

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

EJB-Programming-4-cn.doc

Servlet

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

BPS 6.6 手工部署指南 (JBoss4) 手工部署 BPS( 单机 ) 手工部署包支持的 jboss 版本有 jboss ga 和 jboss ga 示例中的 jboss 版本为 jboss ga, 操作系统为 Solaris(IP:

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

将 MD5 的工具类拷贝到项目中 二 微服务模块的搭建 我们将权限的查询放到一个单独的模块中, 这个模块提供接口供给消费者远程调用 (RPC), 这次范例是微服开发的雏形, 在以后你使用 springcloud 的时候会使用到今天的概念 1 使用 maven 创建新的模块 (microboot-sh

使用 XFire 与 Spring 开发 Web Service 2 实现功能与特点 基于 J2EE 平台的 Web Service 服务 开发方便, 配置简单 设计接口 实现服务 配置暴露接口 XFire 将自动生成对应的 wsdl 支持高级详细配置 与 Spring 无缝集成 运行环境 JDK

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

EJB-Programming-3.PDF

第03章 控制反转(Spring IoC)

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Untitled

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明

IoC容器和Dependency Injection模式.doc

Microsoft PowerPoint - 02-Servlet-Basics-Chinese.ppt

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

新・解きながら学ぶJava

输入 project name 选择完成

题目

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

拦截器(Interceptor)的学习

D C 93 2

Microsoft PowerPoint - ch6 [相容模式]

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

Microsoft Word zw

使用MapReduce读取XML文件

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

基于CDIO一体化理念的课程教学大纲设计

Microsoft Word - QTP测试Flex.doc

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

设计模式 Design Patterns

附录J:Eclipse教程

Microsoft Word - 01.DOC

Stateless Session Beans(无状态bean)的学习

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

Chapter 9: Objects and Classes

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "P

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

AL-M200 Series

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

ebook

untitled

untitled

PowerPoint 演示文稿

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

new 进行创建对象, 是程序主动去创建依赖对象 ; 而 IoC 是有专门一个容器来创建这些对象, 即由 Ioc 容器来控制对象的创建 ; 谁控制谁? 当然是 IoC 容器控制了对象 ; 控制什么? 那就是主要控制了外部资源获取 ( 不只是对象包括比如文件等 ) 为何是反转, 哪些方面反转了 : 有

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

JBuilder Weblogic

无类继承.key

1. 2. Flex Adobe 3.

epub83-1

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

mvc

untitled

untitled


《大话设计模式》第一章

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Java

Microsoft Word - Learn Objective-C.doc

基于ECO的UML模型驱动的数据库应用开发1.doc

本章学习目标 小风 Java 实战系列教程 Shiro 核心功能 Shiro 的 Web 集成 Spring 与 Shiro 整合 SpringBoot 整合 Shiro 1. Shiro 核心功能 1.1. RBAC 模型 在 RBAC 的模型, 涉及到三个关键的元素 : 1) 用户 : 系统的使

IP505SM_manual_cn.doc

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

JavaIO.PDF

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

优迈科技教学大纲2009版本

云数据库 RDS SDK

正文(新).indd

untitled

untitled

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

<4D F736F F D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

RunPC2_.doc

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

TongWeb应用移植案例

AL-MX200 Series

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

epub 61-2

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

InstallShield InstallShield InstallShield Windows Installer ISWI ISWI InstallShield InstallShield InstallShield Windows Installer WI In

EK-STM32F

Hive:用Java代码通过JDBC连接Hiveserver

f2.eps

Transcription:

服务框架 HSF 使用与配置 一江更新时间 :2011-7-20 目录 HSF 常用 OPS 和开发工具介绍... 1 HSF 的使用和配置... 2 下载和安装 HSF... 2 服务开发与部署... 5 服务查询... 10 服务调用... 11 HSFUNIT 测试包的使用... 13 HSF Jetty 插件的使用... 15 路由规则和限流规则的介绍... 21

HSF 常用 OPS 和开发工具介绍 HSF 常用链接入口 :http://hsf.taobao.net, 包括 HSF 服务查询 OPS, 文档中心, 下载中 心等链接 1

HSF 的使用和配置 下载和安装 HSF 第一步 : 从 HSF 主页访问 HSF 软件下载中心, 下载 JBoss 4.2.2 和 HSF 1.4.8.4 压缩包 如 下图所示 : 图 2-1. HSF 下载中心 第二步 : 解压 jboss-4.2.2.ga.zip 包到任意目录, 如 D:\ 这时 JBoss 应该位于 D:\jboss-4.2.2.GA 目录 ; 解压 taobao-hsf.tgz 到 %JBOSS_HOME%\server\default\deploy 目录 至此,JBoss 和 HSF 安装完成 JBoss 服务器目录结构如图 2-2 所示 本文的后续章节中将, 使用 %JBOSS_HOME% 指代 JBOSS 解压目录 D:\jboss-4.2.2.GA 使用 %DEPLOY_DIR% 指代 %JBOSS_HOME%\server\default\deploy 目录 2

图 2-2. JBoss 和 HSF 安装后目录结构 第三步 : 执行 %JBOSS_HOME%\bin\run.bat 启动 JBoss, 这时访问 http://localhost/ 将能够 看到 JBoss 服务器默认首页, 如图 2-3 所示 图 2-3. JBoss 服务器默认首页 如果启动时, 遇到端口被占用异常 :java.net.bindexception: Address already in use: JVM_Bind:80, 如图 2-4 所示 3

图 2-4. JBoss 启动, 端口占用异常 这说明 JBoss Web 默认使用的 80 端口被其他程序占用, 这时你可以停掉占用 80 端口的应用或修改 JBoss 端口配置 修改 JBoss 端口的方法, 打开 %DEPLOY_DIR%\jboss-web.deployer\server.xml 文件, 打到图示的位置, 修改端口即可 这里我使用的是 8080 端口 图 2-5. 修改 JBoss Web 连接端口 到这里,Jboss 和 HSF 的安装就完成了 部署着 HSF 服务的 war 包类型的应用, 可以直 接部署到 Jboss 的 %DEPLOY_DIR% 4

服务开发与部署 本节开发和部署一个简单的 Hello World 服务, 使用的开发工具是 eclipse, 安装了 m2clipse 插件 第一步 : 使用 maven 命令或 eclipse 向导创建一个简单的 Web 工程 hsf-sample 使用命令方式下, 命令如下 : mvn archetype:create -DgroupId=com.taobao.hsf.test -DartifactId=hsf-sample -DpackageName=com.taobao.hsf.test -DarchetypeArtifactId=maven-archetype-webapp 使用 eclipse 方式下, 过程如下 : 1. 选择 File->New->Others( 快捷键 Ctrl+N), 选择 Maven 中的 Maven Project, Next, 图 2-6. 新建工程 2. 勾选 Create a simple project,next, 5

图 2-7. 新建 Maven 工程 3. 进行配置项目属性配置, 如下图所示 配置结束后, 选择 Finish 图 2-8. 项目属性配置 4. 创建完成的 eclipse 工程 hsf-sample, 如图 2-9 所示 图 2-9. hsf-sample 工程目录结构 6

提示 : 使用命令方式创建的工程, 同样可以导入到 eclipse 中 有两种方式 : File->Import->Existing Maven Projects, 然后选择 Maven 工程目录, 执行导入 在 Maven 工程目录中执行 :mvn eclipse:eclipse, 生成 eclipse 配置文件, 通过 File->Import->Existing Projects into Workspace, 然后选择目录执行导入 项目创建成功后, 默认的使用的编译器为 JDK 1.4 版本, 而实际的项目开发目前以 1.6 为主 下一步中将会通过修改 pom.xml 修改该配置 第二步 : 在项目的 pom 配置中加入以下配置信息, 用于指定编译和打包使用的 JDK 版 本为 1.6, 如下所示 <properties> <java.version>1.6</java.version> </properties> <build> <finalname>hsf-sample</finalname> <plugins> <plugin> <artifactid>maven-compiler-plugin</artifactid> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> 修改完成后, 右击工程, 选择 Maven->Update Project Configuration,eclipse 将会刷新 Maven 配置 第三步 : 在工程中添加两个两个基本依赖, 添加如下内容到 pom.xml 中 : <dependencies> <dependency> <groupid>org.apache.geronimo.specs</groupid> <artifactid>geronimo-servlet_2.5_spec</artifactid> <version>1.2</version> <type>jar</type> <scope>provided</scope> </dependency> 7

<dependency> <groupid>org.springframework</groupid> <artifactid>spring</artifactid> <version>2.5.6</version> <type>jar</type> <scope>compile</scope> </dependency> </dependencies> 在这里,geronimo-servlet 用于为 Web 工程提供 servlet 支持,spring 用于为 servlet 提供 spring 应用上下文支持 安装了 m2clipse 插件的 eclipse 将会自动刷新工程依赖, 并下载 加入 jar 包 如果没有自动执行, 可以使用 mvn eclipse:eclipse 命令或 m2clipse 选项中的 Update Dependencies( 见图 2-10) 完成该操作 完成这一步后,eclipse 中的工程将会引入图 2-11 所示的依赖包 图 2-11. 项目依赖的 jar 包 第三步 : 在源代码中创建一个简单的 HelloWorld 服务, 接口和实现如下 : package com.taobao.hsf.sample.service; public interface HelloWorldService { } String sayhello(final String name); package com.taobao.hsf.test.service; public class HelloWorldServiceImpl implements HelloWorldService { public String sayhello(final String name) { return "Hello, " + name + "!"; } } 8

如下 : 第四步 : 在 src\main\resources 下添加服务的 Spring 配置 :ApplicationContext.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" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="helloworldserviceimpl" class="com.taobao.hsf.sample.service.helloworldserviceimpl" /> <bean id="helloworldserviceprovider" class="com.taobao.hsf.app.spring.util.hsfspringproviderbean" init-method="init"> <property name="serviceinterface"> <value>com.taobao.hsf.sample.service.helloworldservice</value> </property> <property name="target"> <ref bean="helloworldserviceimpl" /> </property> <property name="serviceversion"> <value>1.0.0.daily</value> </property> </bean> </beans> 第五步 : 定义 Web 工程的配置, 创建 src\main\webapp\web-inf\web.xml, 这里只加入 一个 Spring 监听器, 用于在应用启动时让 Spring 完成服务初始化 配置如下 : <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 9

<context-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:applicationcontext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.contextloaderlistene r</listener-class> </listener> </web-app> 第六步 : 打包部署应用, 在创建的项目根目录下执行, mvn clean package 进行打包 打 完成功后,target 目录中将会生成名称为 hsf-sample.war 的 War 包 将该 War 包拷贝到 JBoss 的 %DEPLOY_DIR% 中, 然后启动 JBoss, 这就完成了 HSF 应用的发布 在发布了一个服务后, 如何查看该服务已经被成功发布, 别人又如何能知道你这一服务 呢? 这就要借助于 HSFOPS 平台了, 登录 http://hsf.taobao.net/, 进入线下查询地址链接, 首 页就会显示当前机器所订阅和发布的所有服务, 如图 2-12 所示 图 2-12. HSFOPS 服务查询 注意 : 在这一应用的启动过程中, 你可能会看到 log4j 相关的异常, 这里缺失日志配置引起的, 不会影响服务的发布和使用 这里你可能会问, 为什么工程没有依赖任何 HSF 的 jar 包, 服务却能够发布成功 原因是 JBoss 服务器中已经部署了 HSF 包, 国此, 部署在 JBoss 中的所有应用都可以透明地使用 HSF 所提供的功能 服务查询 所有正常发布出去的 HSF 服务, 都可以通过 HSFOPS 平台查询到其发布信息 HSFOPS 平台能够实时从配置中心查询服务的各种信息, 包括 : 服务地址信息 服务的被调用信息, 服务地址的实时推送情况等等 下表为 HSFOPS 查询语法的示例 com.taobao.api.item.itemservice:1.0.0 根据 dataid 精确检索服务 10

com.taobao.api.* *item* *item* type:consumer *uic* group:hsf *uic* ip:172.23* *uic* ip:10.* type:consumer 模糊匹配以 com.taobao.api. 开头的服务模糊匹配服务名称中包括 item 的服务匹配订阅了 *item* 的服务订阅者检索 HSF 组内的 *uic* 服务检索 172.23. 网段发布的 *uic* 服务检索 10. 网段内订阅了 *uic* 服务的服务消费者 服务调用 下面介绍如何调用一个 HSF 服务 这里继续使用上一节中创建的 Web 工程 hsf-sample 完成这一实例 第一步 : 添加服务调用配置信息, 编辑 src\main\resources 中的 ApplicationContext.xml, 添加以下内容 : <bean id="helloworldservice" class="com.taobao.hsf.app.spring.util.hsfspringconsumerbean" init-method="init"> <property name="interfacename"> <value>com.taobao.hsf.sample.service.helloworldservice</value> </property> <property name="version"> <value>1.0.0.daily</value> </property> </bean> 一致 配置文件中指定了要调用的接口名以及版本, 这需要与前一节中的服务提供者的定义相 第二步 : 编写一个简单的 servlet, 内容如下 : package com.taobao.hsf.sample.servlet; import... @SuppressWarnings("serial") public class HelloWorldServlet extends HttpServlet { @Override protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { 11

WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext( )); HelloWorldService helloworldservice = (HelloWorldService) context.getbean("helloworldservice"); PrintWriter out = resp.getwriter(); out.println(helloworldservice.sayhello("yijiang")); return; } } 第四步 : 在 web.xml 中添加 servlet, 编辑 web.xml, 添加以下内容 : <servlet> <servlet-name>helloworldservlet</servlet-name> <servlet-class>com.taobao.hsf.sample.servlet.helloworldservlet</serv let-class> </servlet> <servlet-mapping> <servlet-name>helloworldservlet</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> 第五步 : 重新编译, 打包, 并部署到 JBoss 中, 使用与前一节相同的命令和部署方式 部署成功后, 启动 JBoss, 尝试访问 :http://localhost:8080/hsf-sample/helloworld, 如果服务 器端口经过修改, 请将 URL 中的端口替换成修改后的端口 图 2-13. HelloWorld 实例执行结果 12

注意 : 该实例中, 服务提供者和服务调用者位于同一个应用中 如果不在同一应用内, 服务调用者应用需要依赖相同服务定义接口包 实际项目中, 应用的提供和使用往往是在多个项目中的 通过这个例子可以看到,HSF 主要是使用 HSFSpringProviderBean 和 HSFSpringConsumerBean 两个 Spring Bean 工厂类完成了对服务的发布和调用 这里的实例中的编程规范不一定符合线上项目开发规范, 不作为开发参考 HSFUNIT 测试包的使用 HSFUNIT 是目前推荐使用的 HSF 服务测试包, 它提供了直接在 JUNIT 或类 JUNIT 测试场景中调用 HSF 服务 下面介绍一下如何使用 HSFUNIT 测试包,HSF 服务以刚才我们发布的服务为例 第一步 : 在项目的 /src/test/resources 目录添加测试资源 :ApplicationContext-Test.xml, 该文件中配置了一个 HSFSpringConsumerBean, 和上一节中的配置文件内容基本一致, 惟一的不同是增加了 target 属性, 显式地指定了要调用的服务目标地址 <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="helloworldservice" class="com.taobao.hsf.app.spring.util.hsfspringconsumerbean" init-method="init"> <property name="interfacename"> <value>com.taobao.hsf.sample.service.helloworldservice</value> </property> <property name="version"> <value>1.0.0.daily</value> </property> <property name="target"> <value>10.232.36.84:22200</value> </property> </bean> </beans> 13

第二步 : 编写测试用例, 测试用例中依赖了两个包 Junit 和 spring-test 包, 可以添加以 下依赖到 pom 配置中, <dependency> <groupid>log4j</groupid> <artifactid>log4j</artifactid> <version>1.2.15</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.8.2</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-test</artifactid> <version>3.0.5.release</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupid>com.taobao.hsf</groupid> <artifactid>hsfunit</artifactid> <version>1.0.2</version> <type>jar</type> <scope>test</scope> </dependency> 第三步 : 编写和执行测试用例 测试用例代码如下所示 : 14

package com.taobao.hsf.sample.service; import... @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:applicationcontext-test.xml" }) public class HelloWorldServiceTestCase { static { } HSFEasyStarter.start("D:\\hsf-support\\hsf", "1.4.8.4"); @Autowired protected HelloWorldService helloworldservice; @Test public void testhelloworld() { String result = helloworldservice.sayhello("yijiang"); Assert.assertEquals("Hello, yijiang!", result); } } HSF Jetty 插件的使用 为了方便开发人员使用 HSF, 提高开发效率,HSF 提供了支持 Jetty 服务器的 eclipse 插 件 下面介绍如何安装和在开发中使用 Jetty 插件 这里采用的 eclipse 版本为 3.5.2 第一部分 : 安装 Jetty 插件 在 eclipse 中选择 Help->Install New Software, 图 3-1. Install New Software 在弹出的 Install 对话框中, 输入 http://hsfops.taobao.net/hsf/hsf_jetty/update_site, 然后 15

选择 Add 在弹出的 Add Site 对话框中直接点击 OK 如图 3-1,3-2 所示 图 3-1. Install 对话框 图 3-2. Add Site 对话框 Eclipse 将搜索并显示出要安装的插件, 选中插件,Next, 如图 3-3 所示 16

图 3-3. Install 对话框 然后将出现安装描述信息对话框, 选中 Feature,Next, 如图 3-4 所示 接受授权,Next 如图 3-5 所示 图 3-4. Install Details 对话框 17

图 3-5. Review License 对话框 接下来,eclispe 将下载并执行安装, 中间会有一次弹出安全警告对话框, 选择 Ok 确定 继续安装 如图 3-6 所示 图 3-6. 安全警告对话框 安装完成后 eclipse 会提示重新启动以启用该插件 重启后,Jetty 插件就安装完成了 第二部分 : 使用 Jetty 插件 在 eclipse 中选择 Run->Run Configuration, 如图 3-7 所示 18

图 3-7. Run Configuration 按照图 3-8 所示逐一配置各个参数, 就完成了配置过程, 点击 Run, 就可以启动应用了 图 3-8. 配置 Jetty 插件运行参数 19

注意 : 启动时如果遇到错误 : 可以在配置对话框的 Arguments 中将启动参数适当调小 如图 3-9 所示 图 3-9. 配置 Jetty 插件启动参数 成功启动 Jetty 插件后, 尝试访问 http://localhost:8888/helloworld, 应该可以看到与图 2-11 一样的返回结果 Jetty 插件还提供了数据源配置功能, 这里不详细介绍, 有兴趣的可以参考 HSF Jetty 插件使用指南 20

路由规则和限流规则的介绍 HSF 路由规则支持接口路由, 方法路由, 参数路由, 并且在路由规则的情况下支持权重规 则,HSF 采用 Groovy 脚本作为路由规则设置内容 详细介绍见 confluence : http://confluence.taobao.ali.com:8080/pages/viewpage.action?pageid=100270328 HSF 限流规则提供了对某应用或服务的访问流量进行控制的功能 详细介绍见 confluence:http://confluence.taobao.ali.com:8080/pages/viewpage.action?pageid=192188098 21