HSF服务的开发与使用
1.HSF服务的开发
1) 基于Maven创建一个web工程HSFService,如下图,其他的可以自定义。

2)创建好好在src/main目录下创建一个java目录,并将其设置为sources folder,如下图所示:

3) 配置项目的pom.xml,如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hsf</groupId>
<artifactId>HSFService</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>HSFService Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<java-version>1.7.0_67</java-version>
</properties>
<dependencies>
<!-- Junit依赖包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--spring和servlet的依赖包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!-- mysql依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- Ibatits依赖包-->
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.ibatis-sqlmap</artifactId>
<version>2.3.4.726_4</version>
</dependency>
<!-- 淘宝HSF服务的依赖包-->
<dependency>
<groupId>com.taobao.hsf</groupId>
<artifactId>hsf.app.spring</artifactId>
<version>1.4.9.2</version>
</dependency>
</dependencies>
<build>
<finalName>HSFService</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
4) 编写服务接口和服务的实现

代码如下:
package com.hsf.services;
import java.lang.String;
public interface SayHelloService{
public String sayHello(String user);
}
package com.hsf.services.impl;
import com.hsf.services.SayHelloService;
public class SayHelloServiceImpl implements SayHelloService {
public String sayHello(String user) {
return "Hello "+user+" ,Time is "+System.currentTimeMillis()+"(ms)";
}
}
5) 在Spring的配置文件中配置HSFSpringProviderBean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd ">
<!-- HSF服务配置-->
<!--配置SayHelloService服务的实现 -->
<bean id="SayHelloServiceImpl" class="com.hsf.services.impl.SayHelloServiceImpl"/>
<!--配置SayHelloService服务提供者-->
<bean id="SayHelloService" class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
<!--配置服务提供者对外提供的接口SayHelloService-->
<property name="serviceInterface">
<value>com.hsf.services.SayHelloService</value>
</property>
<!--服务的实现者-->
<property name="target">
<ref bean="SayHelloServiceImpl"/>
</property>
<property name="serviceVersion">
<value>1.0.0.0.dev</value>
</property>
<!-- 组别一致的服务才能互相调用-->
<property name="serviceGroup">
<value>HSF</value>
</property>
<property name="serviceName">
<value>SayHello</value>
</property>
</bean>
<!--配置SayHelloService服务的消费者-->
<bean id="SayHelloServiceConsumer" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">
<!--服务的接口名和版本号须与服务提供者定义的一致-->
<property name="interfaceName">
<value>com.hsf.services.SayHelloService</value>
</property>
<property name="version">
<value>1.0.0.0.dev</value>
</property>
</bean>
</beans>
6) 在Web.xml中配置spring的上下文环境
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>HSFService</display-name>
<!-- 默认显示界面 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- 配置spring上下文环境applicationContext -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 应用上下文配置文件 -->
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<!--配置spring启动listener入口 -->
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
7) 将HSFService部署,启动tomcat,即可在HSF服务治理中心http://ops.jm.taobao.net/hsfops中根据自己主机的IP查找自己发布的服务

8) 将服务接口SayHelloService打成Jar包(二方包)以供客户端使用

2.HSF服务的使用
1) 在客户端的pom.xml文件中添加对HSF的依赖
<dependency>
<groupId>com.taobao.hsf</groupId>
<artifactId>hsf.app.spring</artifactId>
<version>1.4.9.2</version>
</dependency>
2) 在客户端的Spring配置文件中配置HSFSpringConsumerBean
<!--配置SayHelloService服务的消费者-->
<bean id="SayHelloServiceConsumer" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">
<!--服务的接口名和版本号须与服务提供者定义的一致-->
<property name="interfaceName">
<value>com.hsf.services.SayHelloService</value>
</property>
<property name="version">
<value>1.0.0.0.dev</value>
</property>
</bean>
3)引入服务端打好的二方Jar包com.hsf.services.jar,创建SayHelloServlet使用服务

SayHelloServlet的代码如下:
package com.hsf.consumer;
import com.hsf.services.SayHelloService;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; public class SayHelloServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过ServletContext获取Spring的上下文
WebApplicationContext context= WebApplicationContextUtils.getWebApplicationContext(getServletContext());
//通过BeanFactory获取服务的消费者SayHelloServiceConsumer
SayHelloService sayHelloService= (SayHelloService) context.getBean("SayHelloServiceConsumer"); PrintWriter out=response.getWriter();
//调用服务
out.println(sayHelloService.sayHello("xiwu.xxw"));
out.close();
return;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
5)部署该web工程到tomcat,启动tomcat后访问http://localhost:8079/ SayHello?name=zhangsna 即可看到打印出“Hello zhangsan,Time is xxxxx (ms)”
HSF服务的开发与使用的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- 在线教学、视频会议 Webus Fox(2) 服务端开发手册
上次在<在线教学.视频会议软件 Webus Fox(1)文本.语音.视频聊天及电子白板基本用法>里介绍了软件的基本用法.本文主要介绍服务器端如何配置.开发. 1. 配置 1.1 IIS配置 ...
- Android 服务端开发之开发环境配置
Android 服务端开发之开发环境配置 这里是在Eclipse的基础上安装PhpEclipse插件方法,PHPEclipse是Eclipse的 一个用于开发PHP的插件.当然也可以采用Java开发a ...
- 微信公共服务平台开发(.Net 的实现)13-------网页授权(下 :C#代码的实现 )
接着上次的理论,我们这次来研究用代码实现“网页授权获取用户基本信息”,首先我们需要一个链接指向微信的授权页面,在微信开发平台中已经说了,这个链接必须在微信客户端中打开,那么我们就干脆使用文本消息来完成 ...
- GForms展现服务云开发平台
GForms完全基于开放标准,使用XForms作为面向服务的架构简单易用的前端,帮助用户跨多个行业加速数据整合.GForms提供可视化设计器,实现展现服务开发中数据与模型完全分离,加快开发速度快速投入 ...
- 淘宝HSF服务的原理以及简单的实现
淘宝HSF服务具体来说分三个应用:api接口,service服务,本地应用. 最基本的Api服务应该是十分干净的,不含方法,只有接口.它是要被打包(jar包的形式)到中央仓库去的. service服务 ...
- Swift3.0服务端开发(三) Mustache页面模板与日志记录
本篇博客主要介绍如果在Perfect工程中引入和使用Mustache页面模板与日志记录系统.Mustache页面模板类似于PHP中的smarty模板引擎或者Java中的JSTL标签.当然Mustach ...
- Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)
前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...
- 如何有效快速提高Java服务端开发人员的技术水平?
我相信很多工作了3-5年的开发人员都会经常问自己几个问题: 1.为什么总是感觉技术没有质的提高? 2.如何能够有效和快速的提高自身的技术水平? 3.如何进入到一个牛逼的大公司,认识牛逼的人? 这篇文章 ...
随机推荐
- ASP.Net Core Razor 页面路由
在服务器端 Web 应用程序框架中,其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配,以便正确的处理请求.最简单的方法是将 URL 映射到磁盘上的物理文件,在 Razor 页面框架中, ...
- Python学习日志_2017/09/08
今天早晨学习了<Head First :HTML and CSS>:学习了两个章节,感觉从基础学习特别的踏实,能看懂的同时踏踏实实的锻炼了基础的能力.我个人认为无论哪个行业,最重要的永远是 ...
- 极化码的matlab仿真(4)——SC译码(2)
================================================ 首先自作多情的说一句--"抱歉!" 古语"有志者.事竟成",是 ...
- 前端开发【第3篇:JavaScript序】
JavaScript历史 聊聊JavaScript的诞生 JavaScirpt鼻祖:Bremdan Eich(布兰登·艾奇),JavaScript的诞生于浏览器的鼻祖网景公司(Netscape),发布 ...
- 【grunt】两小时入门
目录: 1. 用途和场景 2.Grunt插件 3.相关资源 4.环境安装 5.开始学习 5.1 一个新项目 5.2 生成package.json 5.3 在项目中安装grunt和相关插件 5.4 Gr ...
- sublime text3 3143 注册码
sublime text3 3143 注册码,可用~ Sublime Text一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制.相比于难于上手的Vi ...
- 201521123104 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1. List中指定元素的删除(题目4-1) 1.1 实验总结 这道题的关键是如何删除元素.一 ...
- 201521123109《java程序设计》第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 201521123011《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读:Child压缩包内源代码 1.1 com.p ...
- 201521123007《Java程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...