原文:http://songpo-ath-taobao-com.iteye.com/blog/1405665

如何将Spring bean对外发布,以供远程调用已有一个名称为HelloWorld的Spring Bean,此Bean实现的接口为com.taobao.hsf.test.HelloWorld,现需让其他功能模块能远程调用此Spring Bean;* 增加一个如下内容的Spring Bean XML: <beans><bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean">serviceInterface必须配置[String],为服务对外提供的接口<property name="serviceInterface"><value>com.taobao.hsf.test.HelloWorld</value></property>target必须配置[ref],为需要发布为HSF服务的spring bean id<property name="target"><ref bean="HelloWorld"/></property>serviceVersion为可选配置[String],含义为服务的版本,默认为1.0.0<property name="serviceVersion"><value>1.1.0</value>不要有空白字符/回车换行</property>serviceName为推荐配置[String],含义为服务的名称,便于管理,默认为null<property name="serviceName"><value>HelloWorldService</value></property>serviceDesc为可选配置[String],含义为服务的描述信息,便于管理,默认为null<property name="serviceDesc"><value>HelloWorldService providered by HSF</value></property>serviceGroup为可选配置[String],含义为服务所属的组别,相当于此机器所在的VIP,默认为HSF<property name="serviceGroup"><value>HSF</value></property>supportAsynCall为可选配置[true|false],含义为标识此服务是否支持持久可靠的异步调用默认值为false,也就是不支持持久可靠的异步调用,但仍然支持非持久可靠的oneway、future以及callback方式的异步调用<property name="supportAsynCall"><value>false</value></property>clientTimeout为可选配置[int],含义为客户端调用此服务时的超时时间,单位为ms,默认为3000ms<property name="clientTimeout"><value>3000</value></property>clientIdleTimeout为可选配置[int],含义为客户端连接空闲的超时时间,单位为s,默认为600<property name="clientIdleTimeout"><value>60</value></property>serializeType为可选配置[String(hessian|java)],含义为序列化类型,默认为hessian<property name="serializeType"><value>java</value></property>methodToInjectConsumerIp为可选配置,含义为注入调用端IP的方法,这样业务服务也可以得知是哪个IP在调用,该方法的参数必须为String<property name="methodToInjectConsumerIp"><value>setConsumerIP</value></property>methodSpecials为可选配置,含义为为方法单独配置超时时间,这样接口中的方法可以采用不同的超时时间<property name="methodSpecials"><list><bean class="com.taobao.hsf.model.metadata.MethodSpecial"><property name="methodName" value="sum" /><property name="clientTimeout" value="10000" /></bean></list></property></bean></beans>将此XML加入到Spring加载的applicationContext文件中;按项目正常方式打包部署,启动JBoss,此HelloWorld就可被远程以HSF服务的方式调用了。注意:序列化注意事项 如何在Spring中远程调用其他系统提供的HSF服务在Spring中需远程调用一个接口为com.taobao.hsf.test.HelloWorld,版本为1.1.0的服务,需调用此服务的Spring bean名称定为CallHelloWorld;* 增加一个如下内容的Spring Bean XML: <beans><bean id="CallHelloWorld" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean">interfaceName必须配置[String],为需要调用的服务的接口<property name="interfaceName"><value>com.taobao.hsf.test.HelloWorld</value></property>version为可选配置[String],含义为需要调用的服务的版本,默认为1.0.0<property name="version"><value>1.1.0</value></property>group为可选配置[String],含义为需要调用的服务所在的组,默认为HSF<property name="group"><value>HSF</value></property>methodSpecials为可选配置,含义为为方法单独配置超时时间,这样接口中的方法可以采用不同的超时时间<property name="methodSpecials"><list><bean class="com.taobao.hsf.model.metadata.MethodSpecial"><property name="methodName" value="sum" /><property name="clientTimeout" value="10000" /></bean></list></property>target为可选配置[String],含义为需调用的服务的地址和端口主要用于单元测试环境和hsf.runmode=0的开发环境中,在运行环境下,此属性将无效,而是采用配置中心推送回来的目标服务地址信息<property name="target"><value>10.1.6.57:12200?_TIMEOUT=1000</value></property>asyncallMethods为可选配置[List],含义为调用此服务时需要采用异步调用的方法名列表以及异步调用的方式 默认为空集合,即所有方法都采用同步调用<property name="asyncallMethods"><list>格式为: name:方法名;type:异步调用类型;type默认为oneway,支持的种类有:oneway、future、callback、reliable和reliablecallbackoneway的含义为单向的异步调用,即发起请求后不管执行结果,如果调用的目标服务器不可用,则此次调用会失败,但仅会在日志中记录future的含义为通过Future的方式去获取请求执行的结果,例如先调用下远程的接口,接着继续做别的事情,然后再通过Future来获取结果callback的含义为当远程服务执行完毕后,会将结果回调此处所配置的callbackhandlerreliable的含义为单向的可靠持久异步调用,和oneway的不同在于,即使调用的目标服务器暂时不可用,在其可用后仍然会保证调用成功 reliablecallback的含义为当异步可靠的执行远程服务后,会将结果可靠的回调此处所配置的callbackhandler<value>name:save</value></list></property>设置回调的处理器,此处理器不用实现HSF的任何接口,方法遵循以下约定即可public void ${name}_callback(Object invokeContext, Object appResponse, Throwable t),其中${name}即为发起调用的远程服务的方法名<property name="callbackHandler" ref="PlugServiceCallbackHandler" />设置传递上下文的方式为接口方式,即在发起调用时先调用接口上的setInvokeContext方法传入上下文对象<property name="interfaceMethodToAttachContext" value="setInvokeContext" />设置传递上下文的方式为ThreadLocal对象方式,即在发起调用时通过一个ThreadLocal对象来设置上下文对象,接口方式和ThreadLocal对象方式选其一即可<property name="invokeContextThreadLocal" ref="invokeContextThreadLocal" /> </bean></beans>将此XML加入到Spring加载的ApplicatonContext文件中去;按项目正常方式打包部署,启动JBoss,当存在接口为com.taobao.hsf.test.HelloWorld,版本为1.1.0的服务时,当调用CallHelloWorld时,就会自动的调用远程的服务

HSF 入门-发布和调用hsf服务相关推荐

  1. SpringCoud - 基础入门(服务注册与发现、服务调用、服务降级与熔断篇)

    SpringCloud:是一系列框架的有序集合,也是一套完整的微服务解决方案.利用SpringBoot的开发便利巧妙的简化了分布式系统基础设施的开发,如发现注册.配置中心.消息总线.负载均衡.断路器. ...

  2. WCF 入门之旅(4): 怎样用客户端调用WCF服务

    WCF 入门之旅(4): 怎样用客户端调用WCF服务 前面的demo已经能够跑起来,现在开始考虑用客户端来测试所写的应用了,首先用个普通的应用程序来调用所写的wcf服务吧.其实最后运行wcf服务后的页 ...

  3. ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试

    ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发 ...

  4. 手机调用ArcGIS Server发布的Rest地图服务不显示问题

    如果是本地发布的服务,在手机端调用server服务时,访问rest地址主机名要改为IP加端口号(192.168.1.100:6080),而且必须是内网才能访问 "http://192.168 ...

  5. ArcGIS Server发布地理处理(GP)服务并调用

    目录 1.执行模型 2.发布为地理处理服务(GP服务) 3.查看服务 测试执行 4.调用服务 1.执行模型 新建工具箱 新建模型 根据情况修改模型 执行模型 2.发布为地理处理服务(GP服务) 打开结 ...

  6. SuperMap iServer发布管理以及调用地图服务

    1.发布地图服务 1.1 iServer发布地图服务 在SuperMap iServer安装目录的bin文件夹内双击[startup.bat]文件(.bat是window系统下的批处理文件,而.sh是 ...

  7. WCF入门-项目间调用服务

    练习WCF入库,添加了一个WCF项目,同时添加了一个控制台程序,在控制台程序启动时,调用WCF服务,报错. 控制台程序代码为: namespace WcfConsumer {class Program ...

  8. ※Spring全家桶从入门到X神-微服务+远程调用(RestTemplate)

    微服务+远程调用 1 认识微服务 1.1.单体架构 1.2.分布式架构 1.3.微服务 1.4.SpringCloud 2.服务拆分和远程调用 2.1.服务拆分原则 2.2.服务拆分示例 2.2.1. ...

  9. spring-cloud开发微服务笔记(二):高可用Eureka注册中心的搭建与RestTemplate和Fengin客户端调用微服务示例

    引言:这一篇博客是将上一篇spring-cloud-eureka-server的单机模式改为集群模式,体现eureka的高可用特性.生产环境无论是Eureka注册中心还是Client客户端大多是部署在 ...

最新文章

  1. Android笔记之ViewModel的使用示例
  2. java封装继承多态语法,GO语言中封装,继承,和多态
  3. 42、Power Query-Text.Remove函数应用
  4. Webservice入门教程_教程目录以及地址
  5. centos查看网关地址
  6. 启明云端分享|ESP32/ESP8266 烧录器 USB-TTL转接板开发工具ESP-T01的使用教程,视频可参考B站
  7. netpref 使用_使用PrefView监测.NET程序性能(二):Perfview的使用
  8. (网页)中的简单的遮罩层
  9. 蓝桥杯 入门训练 序列求和
  10. onItemLongClick+onCreateContextMenu实现长按ListItem弹出不同菜单
  11. 基于Spring Boot 的Blog开发
  12. Atitit 提升进度的大原则与方法  高层方法  attilax总结
  13. 《音乐达人秀:Adobe Audition实战200例》——实例5 将电视音乐节目伴音转录到电脑里...
  14. linux清理磁盘空间_Ubuntu上释放磁盘空间的几种简单方法
  15. oracle查看登录失败次数,Oracle取消用户连续登录失败次数限制
  16. exchange服务器重装后,exchange服务器之exchange 2016卸载及重装的经历
  17. Recap|Hadoop User Group France
  18. 9元包一年 阿里宝与腾讯王卡10G/月全国流量
  19. 【TP调试】android虚拟按键无振动效果
  20. 衡量两个概率分布之间的差异性的指标

热门文章

  1. TransE模型的python代码实现
  2. 小程序跳到h5页面_小程序如何跳转h5页面
  3. [UWP]使用SpringAnimation创建有趣的动画
  4. Latex Tips: 如何输入矩阵(illustrated in Jupyter Notebook)
  5. 未能找到下列包文件: C:\Users\Administrator\Desktop\DotNetFX40\dotNetFx40LP_Full_x86_x64zh-Hans.exe
  6. Java的Map(映射)特性及编程思想
  7. Linux应用基础与实训小结
  8. GridControl 单元格自动换行
  9. python编译型语言和解释型语言
  10. VLC媒体播放器Web插件详细说明