文档章节

nhEsb使用介绍

杰睿宁
 杰睿宁
发布于 2016/11/30 17:58
字数 624
阅读 57
收藏 0

nhesb

nhEsb 为开源 ESB 项目,提供服务发布、查找和治理功能。 为了避免ESB性能瓶颈,在设计理念上采用旁路的方式。 ESB服务提供页面可以注册服务地址、访问权限,提供接口查询服务地址信息,记录服务访问日志。 这样系统间交互调用实际链接虽然不通过ESB,但认可起到服务治理的效果。提供统一的调用框架供系统嵌入。

客户端和服务端输入参数统一使用NhCmdRequest 客户端和服务端输入参数统一使用NhCmdResult

客户端通过INhCmdService接口实现类调用远程服务 INhCmdService接口目前有cxf和akka两种实现类。 NhCmdResult execNhCmd(NhCmdRequest nhCmdRequest) INhCmdService接口实现类需要通过工厂类获取 NhEsbClientFactory或NhEsbAkkaClientFactory

服务端通过继承INhCmdHandler接口实现服务handler 且handler的命名需要符合规范 Ws+命令名称+CmdHandler handler类需要使用spring管理 bean的id需要符合规范 ws+命令名称+CmdHandler

客户端A调用远程B系统Test服务的例子(底层选择基于cxf)

NhCmdRequest nhCmdRequest=new NhCmdRequest();//生成输入参数对象 nhCmdRequest.setCmdName("Test");//设置命令名称,在服务端会映射为名为wsTestCmdHandler的springBean对象 nhCmdRequest.setFromSysId("A");//设置客户端系统标识A nhCmdRequest.setToSysId("B");//设置服务端系统标识B INhCmdService cmdService=NhEsbClientFactory.getClient("B");//输入服务端系统标识B获取合适的INhCmdService NhCmdResult result=null; try { result = cmdService.execNhCmd(nhCmdRequest);//远程调用 } catch (Exception e) { e.printStackTrace(); } //打印返回的结果数据 retStr=String.format("status=%d,code=%s,data=%s", result.getResultStatus(),result.getResultCode(),result.getResultData());

cxf客户端配置 NhEsbClientFactory工厂中设置不同目标系统访问地址(目标系统标识由NhEsbAddress中的sysid确定) NhEsbClientFactory.getClient("B");通过工厂取INhCmdService时输入参数选择不同目标系统 <bean class="com.nh.esb.ws.NhEsbClientFactory" init-method="init"> <!-- <property name="configUrl" value="${nhesb.config.url}"></property> --> <!-- <property name="remoteConfigFlag" value="true"></property> --> <property name="addressMap4Bean" ref="addressSysB"></property> </bean>

<bean id="addressSysB" class="com.nh.esb.core.NhEsbAddress">
<property name="sysid" value="B"></property>
<property name="ip" value="localhost"></property>
<property name="port" value="8080"></property>
<property name="url" value="http://localhost:8080/demo-service/webservice/nhCmdService"></property>

</bean>

cxf远程服务端配置 在远程服务端容器中需配置暴露cxf接口监听服务和cxf框架 NhCmdServiceImpl负责转发调用指定的WsxxxCmdHandler实现 <bean id="nhCmdServiceImpl" class="com.nh.esb.service.ws.NhCmdServiceImpl"> </bean> <jaxws:endpoint id="nhCmdService" address="/nhCmdService" implementor="#nhCmdServiceImpl"> </jaxws:endpoint>

管理端sql CREATE TABLE nhesb_service_address ( uuid varchar(50) default NULL, sysid varchar(50) default NULL, ip varchar(255) default NULL, port varchar(10) default NULL, url varchar(500) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

© 著作权归作者所有

杰睿宁

杰睿宁

粉丝 9
博文 21
码字总数 15442
作品 10
东城
私信 提问
提供服务发布、查找和治理功能的 ESB 项目--nhEsb

nhEsb 为开源 ESB 项目,提供服务发布、查找和治理功能。为了避免ESB性能瓶颈,在设计理念上采用旁路的方式。ESB服务提供页面可以注册服务地址、访问权限,提供接口查询服务地址信息,记录服...

杰睿宁
2016/11/07
1K
0
Java 集合系列目录(Category)

Java 集合系列目录(Category) 下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录。 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系列03之 Arra...

foxeye
2016/02/29
77
0
电霸儿/juggle

juggle juggle是一个极简的、组件式的js框架。无依赖,完美闭包,灵活且适合渐进学习,可与任何框架整合。包含(支持冒泡的事件、Tween、MV框架、http、websocket、资源、模块)等组件,按需...

电霸儿
2017/10/21
0
0
数据分析学习笔记(教材篇)

最近在学习数据科学方面的内容,因为是自学,身边也没有靠谱的老司机带着,工作又不相关,所以只能一点点的摸索。 这篇笔记主要用于罗列一些自学过程中使用的教材和在线课程,并会简要的说明...

灰大羊
2016/08/06
101
0
Oracle数据库JOB任务管理_超越OCP精通Oracle视频教程培训40

课程介绍 风哥Oracle视频教程<>的第10/10套:Oracle数据库JOB任务管理。Oracle数据库JOB介绍,dbms_job使用参数 ,dbmsjob使用案例讲解,dbmsjob的时间参数汇总,ORACLE Scheduler介绍,ORA...

风哥Oracle
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
4
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部