欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI

页面树结构

欢迎使用普元文档库

Skip to end of metadata
Go to start of metadata

前期准备环境说明:

  • ESB6.3(支持https双向认证)
  • https服务(linux、windows各一个)
  • oracle10g

第一步:开发场景

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

http://192.168.30.28:9090/https/test235http

  • 无标签