欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
1.场景:HTTP Transport、HTTP代理服务、中介服务、HTTP业务服务、HTTP Endpoint
2.说明:
(1)在HTTP代理服务中默认指定一个访问uri
(2)在中介流中编排动态路由流程图,如下图所示:
编写动态路由代码:
public ITipMessagePayload TestDyn(ITipMessagePayload in) { Map protocolHeader = (Map)in.getProtocolHeaders(); protocolHeader.put("Content-Type", "text/xml;charset=UTF-8"); protocolHeader.put("Host", "127.0.0.1"); String uri = (String)protocolHeader.get("$tip_pathInfo"); ////--------------------------------------------------------------------------- DataSource datasource = DataSourceHelper.getDataSource("default"); Map<String, HttpDynamicEndpointRef> mapObj = new HashMap<String, HttpDynamicEndpointRef>(); try { Connection conn = datasource.getConnection(); Statement stmt = conn.createStatement(); String sql = "SELECT KEYNAME,ROUTIP,ROUTPORT,ROUTURI FROM GFKD_ROUTER T "; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { HttpDynamicEndpointRef dyEndpoint = new HttpDynamicEndpointRef(); dyEndpoint.setIp(rs.getString("ROUTIP")); dyEndpoint.setPort(rs.getString("ROUTPORT")); dyEndpoint.setUriPattern(rs.getString("ROUTURI")); mapObj.put("/https/"+rs.getString("KEYNAME"), dyEndpoint); } } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } //------------------------------------------------------------------------------------------ TipMessageBuilder builder = TipMessageBuilder.withPayload(in.getMessagePayload()); builder.copySystemHeaders(in.getSystemHeaders()); builder.setProtocolHeaders(in.getProtocolHeaders()); builder.setMessageHeaders(in.getMessageHeaders()); builder = builder.setSystemHeader( ITipMessagePayload.DYNAMIC_ENDPOINT_REFERENCE, mapObj.get(uri)); return builder.build(); }
其中https服务信息通过数据库获取,具体是通过ESB Server中\server\EOS_srv\config\user-config.xml里配置的数据库连接获取,在此动态改变http代理服务uri来获取指向的https服务。
(3)HTTP业务服务默认指定一个https服务
(4)HTTP Endpoint中默认指定一个https服务的IP地址及端口,选择https协议类型,在证书配置中选择这两个https服务的信任证书,如下图所示:
启动已支持路由配置的ESB SAM后可看到‘软件资产管理’--->>‘路由表信息管理’菜单可对路由信息进行动态配置,如下图所示:
说明:此处SAM所连接的数据库必须与刚才Server所连接的数据库一致,以便获取服务信息。
键值:服务唯一名称,在我提供的示例中通过中介流配置,对应的是代理服务中动态路由指向的uri名称
路由地址:服务提供者所在ip地址
路由端口:服务提供者端口信息
请求uri:服务提供者uri
部署场景,启动Server,及两个服务提供者,运行调用。
说明,示例中在中介流中请求代理URI固定为/https
最终ESB服务器地址为http://server IP:port/固定URI/键名
如对外提供地址为
http://192.168.30.28:9090/https/test28http