Soa IIB-为不同环境设置HTTP请求基URL的正确/标准方法

Soa IIB-为不同环境设置HTTP请求基URL的正确/标准方法,soa,esb,Soa,Esb,我们正在尝试用SOA实现我们的产品,目前使用IBM集成总线v9作为我们的ESB 我们有3个不同的环境(用于不同目的的服务器集),我们在其中部署产品: 开发:在测试和开发过程中使用 客户测试:更稳定的构建供客户批准,然后再发布主版本 主要/生产:这是最后一件事 我们遇到的挑战是:为不同环境的消息流的HTTP节点设置基本URL;在不损害干燥原则的情况下 似乎只有使用mqsiapplybaroverride命令才能在HTTP请求节点中一次性设置整个URL。问题在于,可以从单个服务器公开多个资源,因

我们正在尝试用SOA实现我们的产品,目前使用IBM集成总线v9作为我们的ESB

我们有3个不同的环境(用于不同目的的服务器集),我们在其中部署产品:

  • 开发:在测试和开发过程中使用
  • 客户测试:更稳定的构建供客户批准,然后再发布主版本
  • 主要/生产:这是最后一件事
我们遇到的挑战是:为不同环境的消息流的HTTP节点设置基本URL;在不损害干燥原则的情况下

似乎只有使用mqsiapplybaroverride命令才能在HTTP请求节点中一次性设置整个URL。问题在于,可以从单个服务器公开多个资源,因此具有公共的基本URL

使用UDP似乎是一种很有前途的方法。我们可以在UDP中为每个服务设置基本URL,并在使用UDP的HTTP请求节点之前的计算节点中构建HTTP请求URL。然后可以使用mqsiapplybaroverride覆盖UDP。。。问题UDP的作用域似乎不超过单个消息流。。。因此,每当我想从服务器调用资源时,我必须为该消息流定义UDP,否则条覆盖不会影响该消息流的基本URL。。。这将导致在每个消息流中重复基本URL。。。干燥适用

这应该是典型SOA应用程序中的常见问题。。。那么有没有更好的方法来解决这个问题呢?在典型的JavaEE容器中有类似JNDI的特性吗


IIB v10.0.0.6似乎引入了一个RestRequest节点,该节点提供基本URL设置功能。。。不幸的是,我们目前还没有这样的奢侈。

您可以使用用户定义的可配置服务来实现这一点


您可以使用java计算节点或映射节点和自定义java从可配置服务读取和设置URL。

一个好的解决方案是在数据库中为每个环境设置baseUrl,并将值设置为以下值:

SET OutputLocalEnvironment.Destination.REST.Request.BaseURL = GetCachedOrFromDB('custom_service_baseUrl');
GetCachedOrFromDB->定义从缓存或db(如果不在缓存中)获取值的函数
“custom_service_baseUrl”->为每个环境的设置表定义属性作为键。

DRY很好,但在某些情况下,我认为最好显式设置参数,在这种情况下,只为每个HTTP节点设置整个URL会更干净。通过从代码中设置URL,您只会引入可能的错误,并且通常会完成一个简单的配置。不同的环境如何?编辑每个环境的所有请求URL?。。。听起来没什么意思!谢谢,我来看看这个