hsf服务的调用过程

article/2025/10/21 5:58:16

目录:

写一个hsf服务并发布

       写一个接口工程

       写一个实现接口的实现工程

       写一个发布接口工程和实现工程的服务工程

       写一个应用实现借口

hsf服务调用的过程

       通过JBoss/Tomcat启动服务

       通过main口启动服务

  


过程:

写一个hsf服务并发布:

        在上一篇博客中,模块(module)方式创建maven工程,已经建好了工程

        写一个接口工程lonkun-api中写入一个接口类

接口类中只写被别人引用的pojo和接口这里定义了这两个接口,里面的内容想怎样写,自己可以决定的。

使用maven的install可以打成一个jar包到本地仓库中。

        写一个是实现类:

实现类自己是实现,当然在pom.xml中要引入上一个jar包,不然实现时,找不到类啊!使用maven的install可以打成一个jar包到本地仓库中。

             写一个服务类:

最主要的两个配置文件,web.xml中增加一个spring监听:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:ApplicationContext.xml</param-value>
  </context-param>
  <listener>    
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

在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="loginService" class="com.test.service.LoginService" />

  <bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
    <property name="serviceInterface">
      <value>com.test.service.ILogin</value>
    </property>
    <property name="target">
      <ref bean="loginService" />
    </property>
    <property name="serviceVersion">
  <!-- 服务如果服务是发布在自己的开发机器上,请不要使用1.0.0.daily的版本号 -->
      <value>1.0.0.longkun.wyb</value>
    </property>
  </bean>
</beans>

上面的红色字提示说明是HSF的提供者,当解析这个配置文件的时候,服务就会启动起来。什么时候解析这个配置文件呢?后面讲解

使用maven,对整个工程进行maven package

找到longkun-sever.war(默认有这个文件,如果在配置文件中改变了名字就不是它了)。把longkun-server.war放到jboss的/server/default/deploy/下

启动JBoss,就可以启动服务了。启动的JBoss一定是阿里巴巴提供的改过的JBoss还有阿里巴巴提供的插件。服务启动了,应用就可以使用了。

                   使用时,通过spring注入,其中的实现工程就是一个代理而已,使用时要注意aplicationContext.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="loginService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">
      <property name="interfaceName">
        <value>com.test.service.ILogin</value>
      </property>
      <property name="version">
        <value>1.0.0.longkun.wyb</value>
      </property>
    </bean>
</beans>

Java中代码是:

main(){

 HSFEasyStarter.startFromPath("C:\\jboss-4.2.2.GA\\server\\default\\deploy");
                Thread.sleep(1000);
            
                
//                new ClassPathXmlApplicationContext("ApplicationContext.xml");
                ApplicationContext context =  new ClassPathXmlApplicationContext("ApplicationContext.xml");
                System.out.println("Start......." +"...End!");
//                
                System.out.println("zhang ge z world");

ILogin loginService = (ILogin)context.getBean("loginService");
                User user = new User();
                user.setId(100);
                user.setName("zhang yao");
                user.setPassword("1234567890qqqqq");
                user.setDate(new Date());
                System.out.println("loginService....");
                if(loginService == null){
                    System.out.println("null.....");
                    return;
                }
//                System.out.println(loginService.check("1222"));
                System.out.println(loginService.getName(user));
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }

hsf服务调用的过程:

          不管哪种方式启动,都需要解析ApplicationContext.xml这个配置文件

            JBoss启动方式是:JBoss服务器启动,然后是解析一些插件,这些插件(plugin)的具体作用,这里先不详讲,主要是启动阿里巴巴集团的一些必要的应用服务,

这里用到的是为后面发布服务提供环境。JBoss服务器启动,就要读取deploy目录下的web程序(带有web.xml文件的.war包),先解析web.xml文件,发现web.xml中

有spring容器的监听,那么解析ApplicationContext.xml文件并初始化,那么就把longkun-server服务启动起来了。

         main口启动(上面程序就是main口启动的):通过 HSFEasyStarter.startFromPath("C:\\jboss-4.2.2.GA\\server\\default\\deploy");分析插件,提供环境;

                                            ApplicationContext context =  new ClassPathXmlApplicationContext("ApplicationContext.xml");解析这个配置文件并初始化;

                                       服务启动了。

在web程序的应用端的ApplicationContext.xml中下面代码是必须的:

        <bean id="loginService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">
      <property name="interfaceName">
        <value>com.test.service.ILogin</value>
      </property>
      <property name="version">
        <value>1.0.0.longkun.wyb</value>
      </property>
    </bean>


http://chatgpt.dhexx.cn/article/hMfgO1C7.shtml

相关文章

HSF 开发

HSF 简介 HSF(High Speed Service Framework)&#xff0c;高速服务框架&#xff0c;是阿里-主要采用的服务框架&#xff0c;其目的是 作为桥梁联通不同的业务系统&#xff0c;解耦系统之间的实现依赖。 1: RPC 远程过程调用(Remote Procedure Call)是一种通过网络从远程计算机程…

分布式服务框架 HSF

摘要&#xff1a; RPC 协议采用多路复用的 TCP 长连接方式&#xff0c;在服务提供者和调用者间有多个服务请求同时调用时会共用同一个长连接&#xff0c;即一个连接交替传输不同请求的字节块。它既避免了反复建立连接开销&#xff0c;也避免了连接的等待闲置从而减少了系统连接…

HSF (RPC远程调用框架)

HSF 1. HSF概述1.1 概述1.2 HSF架构1.3 功能1.4 应用开发方式 2. 使用 Ali-Tomcat 开发2.1 Ali-Tomcat概述2.2 安装及开发环境配置2.2.1 安装Ali-Tomcat和Pandora2.2.2 配置IntelliJ IDEA开发环境 2.3 开发HSF应用2.3.1 定义服务接口2.3.2 开发服务提供者2.3.3 开发服务消费者2…

分布式服务框架HSF简介

高速服务框架 HSF (High-speed Service Framework)&#xff0c;是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。HSF 统一了分布式应用中服务的发布/调用方式&#xff0c;从而帮助您方便、快速的开发分布式应用 HSF 架构 HSF 作为一个纯客户端架构的 RPC 框架&#xff0c;本…

分布式服务框架HSF

HSF提供的是分布式服务开发框架&#xff0c;taobao内部使用较多&#xff0c;总体来说其提供的功能及一些实现基础&#xff1a; 1.标准Service方式的RPC 1&#xff09;、Service定义&#xff1a;基于OSGI的Service定义方式 2&#xff09;、TCP/IP通信&#xff1a; IO方式…

分布式 RPC 框架HSF

分布式 RPC 框架HSF 概述HSF架构调用方式优势应用场景 概述 HSF (High-speed Service Framework)&#xff0c;高速服务框架&#xff0c;是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。HSF 作为阿里巴巴的基础中间件&#xff0c;联通不同的业务系统&#xff0c;解耦系统间的…

关于 HSF框架 (一)简单介绍

HSF介绍 HSF全称 high speed frameworkd, 是Alibaba内部使用的RPC框架&#xff0c;最初与Dubbo进行内部竞争&#xff0c;由于多方面的原因最终选择了HSF。 主要原因如下&#xff1a; HSF代码量少一些&#xff0c;轻量一些&#xff0c;代码量大概2/3, Dubbo设计更加全面功能更多…

hsaf框架

一.技术分层 a&#xff09;.前端展现层&#xff0c;泛指一切在客户端直接与用户打交道的客户界面&#xff08;&#xff09;&#xff0c;MVC架构中的view层 b&#xff09;.控制层&#xff1a;分为过滤器拦截器层&#xff0c;Controller控制器层 c&#xff09;.业务逻辑层&…

高速服务框架HSF

一、简述 HSF(High-speed Service Framework)&#xff0c;是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。 HSF 连通不同的业务系统&#xff0c;解耦系统间的实现依赖。HSF 从分布式应用的层面&#xff0c;统一了服务的发布与调用方式&#xff0c;从而帮助用户更加方便、快…

阿里HSF(服务框架)

文章目录 HSF&#xff08;服务框架&#xff09;简介架构设计Provider——服务提供者Consumer——服务消费者ConfigServer——配置服务器Diamond——持久化配置中心addressServer——地址服务元数据存储 HSF&#xff08;服务框架&#xff09; 文章地址 简介 高速服务框架 HS…

MySQL的批量更新和批量新增优化

MySQL的批量更新和批量插入优化 如果需要批量插入和批量更新操作就需要进行sql 的优化&#xff0c;否则近30万条数据的插入或更新就会耗费几分钟甚至更多的时间&#xff0c; 此文仅批量插入和批量更新的几种优化。 批量插入篇&#xff08;使用多条insert语句、使用union all创…

mybatis 批量更新

1 更新单条记录 UPDATE course SET name course1 WHEREid id1; 2 更新多条记录的同一个字段为同一个值 UPDATE course SET name course1 WHERE id in (id1,id2,id3); 3 更新多条记录为多个字段为不同的值 3.1 比较普通的写法&#xff0c;是通过循环&#xff0c;依次执行…

Update批量更新(高性能、动态化)

文章目录 前言一、环境开发环境测试环境 二、灵光乍现MyBatis-Plus源码2.初见真正的批量更新语法 三、开工基础类搭建SysUser&#xff08;表sys_user实体类&#xff09;Stash&#xff08;拼接SQL服务&#xff0c;内部类&#xff09;TableCacheDTO&#xff08;数据表信息存储&am…

mybatis-plus批量更新updateBatchById

前言 在使用mybatis-plus过程中&#xff0c;有很多插件都特别优秀&#xff0c;不仅使我们代码更加优雅&#xff0c;也提升了效率。其中有个批量插入的插件insertBatchSomeColumn使用起来也挺方便的&#xff0c;但是批量更新一直没有官方插件&#xff0c;网络上面也没有找到靠谱…

mysql批量更新方法

目录 方法一 replace into 批量更新 方法二 insert into 批量更新 方法三 临时表 批量更新 方法四 case when 批量更新 本篇文章实验mysql版本为5.7.20 隔离级别为rr&#xff0c;加锁场景的问题在mysql8.0.18中为复现 方法一 replace into 批量更新 原理&#xff1a;replace i…

mybatis批量更新数据三种方法

具体的可以参考下面链接&#xff1a; ​​​​​​mybatis批量更新数据三种方法效率对比_PreciousLife的博客-CSDN博客_mybatis 批量更新 此处说明下&#xff0c;若是使用for循环遍历方式&#xff0c;来生成N条sql&#xff0c;那么就需要注意两个地方&#xff1a; 第一个地方…

MySql中4种批量更新的方法

https://yq.aliyun.com/ziliao/59813 MySql中4种批量更新的方法 最近在完成MySql项目集成的情况下&#xff0c;需要增加批量更新的功能&#xff0c;根据网上的资料整理了一下&#xff0c;很好用&#xff0c;都测试过&#xff0c;可以直接使用。 mysql 批量更新共有以下四种办法…

MySQL批量更新的四种方法

最近做一个需求&#xff0c;更新3w条数据&#xff0c;一个一个update去更新的&#xff0c;结果花了80分钟&#xff0c;这样性能上很差&#xff0c;也容易阻塞&#xff0c;所以就找了一些MySQL批量更新的方式&#xff0c;在此记录一下 方法一&#xff1b;replace into 这种更新…

Mybatis之批量更新数据(批量update)

前言 当我们使用mybatis的时候&#xff0c;可能经常会碰到一批数据的批量更新问题&#xff0c;因为如果一条数据一更新&#xff0c;那每一条数据就需要涉及到一次数据库的操作&#xff0c;包括网络IO以及磁盘IO&#xff0c;可想而知&#xff0c;这个效率是非常低下的。而平时我…

List和Set之间的转换:达到集合元素去重复

在项目中看到一段代码&#xff1a; return new ArrayList<>(new HashSet<LabelEnum>(list)); 当时我的表情是这样的&#xff1a; 这把list作为构造参数创建新的集合来返回是要做什么&#xff0c;这里的list也是ArrayList集合&#xff0c;这样绕了一圈返回…