数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类 全部分类技术牛文全部分类教程最新 网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava 新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销 开发数据库服务器系统虚拟化云计算 嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

集成IBM Rational CLM设置一种复杂的拓扑结构

来源:本网整理
文中介绍的拓扑结构与 jazz.net 上记录的 CLM 标准拓扑结构相一致,描述了 Rational Lifecycle Integration Adapters 1.1.1 开发过程中使用的环境。IBM® Rational® Lifecycle Integration Adapters 可用于将现有的第三方应用程序生命周期管理 (ALM) 服务器与 Rational 协作式生命周期管理 (CLM) 解决方案相集成。CLM 包含 3 款产品:
  • IBM® Rational® Requirements Composer 或 IBM® Rational® DOORS® Next Generation
  • IBM® Rational® Quality Manager
  • IBM® Rational Team Concert™

Rational Lifecycle Integration Adapters Standard Edition 包含 3 种适配器:

  • IBM® Rational® Adapter for Git 可用于将 Git、Gitweb 和 Gerrit 变更请求与 Rational Team Concert 工作项相联系。
  • IBM® Rational® Adapter for HP ALM 可用于将 HP® ALM 或 HP Quality Center 中的需求和测试工件与 Rational Requirement Composer 需求和 Rational Team Concert 工作项相联系。此适配器还支持集成 IBM® Rational® ClearQuest®。
  • IBM® Rational® Adapter for JIRA® 可用于将错误与 Rational Requirements Composer 中的需求、Rational Quality Manager 中的测试工件和 Rational Team Concert 中的工作项相联系。此适配器还支持集成 Rational ClearQuest。

评估阶段

您可能仅有一个第三方服务器(Git、JIRA、HP ALM 或 HP Quality Center),或者您可能一次只想评估一种集成。对于每种情况,可使用一个较小的拓扑结构,它仅包含第三方服务器和您有兴趣集成的 CLM 产品。我们的评估拓扑结构基于 CLM (D1) 部门 – 单一应用服务器,Windows/DB2 拓扑结构。这个部门级拓扑结构是一种小型的 Windows® 环境,它使用安装在另一个服务器上的 IBM® DB2® 将 CLM 应用程序部署在单个应用服务器上。这个第三方服务器使用恰当的适配器来集成 CLM 应用程序。Rational Reporting for Development Intelligence 在 Rational Lifecycle Integration Adapters 拓扑结构中是可选的,因为它没有为第三方服务器提供报告功能。

备注:拓扑结构图使用了缩略语来表示产品名称:这些缩略语如下:

  • CCM:Rational Team Concert
  • RM:Rational Requirements Composer 或 Rational DOORS Next Generation
  • QM:Rational Quality Manager

Git 适配器部门级拓扑结构

Git 适配器部门级拓扑结构由安装在一台服务器上的 Rational Team Concert 和 IBM® Rational® Jazz™ Team Server 以及安装在另一台服务器上的数据库组成。Git 适配器是一个安装在 Jazz Team Server 上的 J2EE 应用程序。集成的 Git 端可将 Gitweb 或 Gerrit(或同时将二者)安装在一台或多台服务器上,但对于较小的拓扑结构,它们安装在单个服务器上。Git 挂钩安装在此服务器上。

集成IBM Rational CLM设置一种复杂的拓扑结构

图 1. Git 适配器部门级拓扑结构

HP 适配器部门级拓扑结构

HP 适配器部门级拓扑结构由安装在一台服务器上的 Rational Requirements Composer(或 Rational DOORS Next Generation)、Rational Team Concert 和 Jazz Team Server 以及安装在另一台服务器上的数据库组成。HP 适配器可安装在与 Jazz Team Server 相同的 IBM® WebSphere® Application Server 上,或者安装在另一台服务器上。HP ALM 或 HP Quality Center 安装在它自己的服务器上。如果仅打算评估 HP 与 Rational Team Concert 之间的集成,则无需部署 Rational Requirements Composer。类似地,如果仅打算评估与 Rational Requirements Composer 的集成,则无需部署 Rational Team Concert。

集成IBM Rational CLM设置一种复杂的拓扑结构

图 2. HP 适配器部门级拓扑结构

JIRA 适配器部门级拓扑结构

JIRA 适配器部门级拓扑结构由安装在一台服务器上的 Rational Requirements Composer(或 Rational DOORS Next Generation)、Rational Quality Manager 和 Jazz Team Server 以及安装在另一台服务器上的数据库组成。JIRA 适配器作为一个插件安装在单独的 JIRA 服务器上。如果仅打算评估 JIRA 与一个或多个 CLM 产品之间的集成,只需部署您感兴趣的产品即可。

集成IBM Rational CLM设置一种复杂的拓扑结构

图 3. JIRA 适配器部门级拓扑结构

生产阶段

假设您完成评估之后,决定移植到到企业的生产环境中,这里的团队使用了第三方服务器且不断迁移到 IBM CLM 解决方案。Rational Lifecycle Integration Adapters 1.1.1 开发期间使用的企业拓扑结构基于 CLM (E1) Enterprise - Distributed / Linux / DB2 拓扑结构。它是一个多服务器 Linux® 环境,包含所有支持的集成。CLM 安装在分布式 IBM WebSphere Application Server 上,使用 IBM DB2 作为数据库。IBM HTTP Server 被用作一个独立服务器上的反向代理。应用程序安装在服务器上的非 root 用户目录下,而且启用了 LDAP 安全性。第三方服务器使用一种推荐配置安装在不同的服务器上。CLM 应用程序与第三方服务器之间的集成是使用 Rational Lifecycle Integration Adapters 来建立的。Git 适配器安装在与 Jazz Team Server 相同的 IBM WebSphere Application Server 上。HP 适配器安装在一个单独的 IBM WebSphere Application Server 上。JIRA 适配器作为一个插件安装在 JIRA 服务器上。如果仅对部分集成而不是所有集成感兴趣,那么只需部署您需要集成到环境中的产品即可。

集成IBM Rational CLM设置一种复杂的拓扑结构

图 4. Rational Lifecycle Integration Adapters 企业拓扑结构

Lifecycle Integration Adapters 企业拓扑结构部署在具有以下规格的虚拟化的服务器上:

  • 2 个 CPU
  • 8 GB 内存
  • Red Hat® Enterprise Linux® 6.4 64 位

Git、HP 和 JIRA 服务器和相应的适配器部署在具有以下规格的虚拟化服务器上:

  • 2 个 CPU
  • 8 GB 内存
  • Red Hat Enterprise Linux 6.2 64 位

在 Rational Lifecycle Integration Adapters 1.1.1 开发期间,企业拓扑结构的部署使用了以下软件:

  • Rational CLM 解决方案 4.0.4
  • IBM WebSphere Application Server 和 IBM HTTP Server 8.5.0.2
  • IBM DB2 Enterprise Edition 10.1.0.2
  • HP ALM 11.52
  • Git 和 Gitweb 1.8.3.2、Gerrit 2.6
  • JIRA 6.0.6

企业拓扑结构的部署还使用了以下软件:

  • Rational CLM 解决方案 4.0.3
  • IBM WebSphere Application Server 和 IBM HTTP Server 8.5.5
  • IBM DB2 Enterprise Edition 10.1.0.2
  • HP ALM 11.52
  • Git 和 Gitweb 1.8.3.2、Gerrit 2.6
  • JIRA 6.0.6

在此配置中,在升级测试中已将 CLM 从 4.0.3 升级到 4.0.4。

要在服务器之间建立通信,您需要让这些服务器建立友好关系并建立项目关联。完成此任务的步骤记录在 Rational Lifecycle Integration Adapters 信息中心 内。

由于时间表的差异,在 Rational CLM 解决方案 4.0.5 版发布后期,还会使用该版本完成了一些测试。

配置 JIRA 服务器与 IBM HTTP Server 之间的安全传输的的步骤将在下一节中介绍。

为 JIRA 服务器和 IBM HTTP Server 配置 SSL

您需要将 JIRA 服务器和 IBM HTTP Server 配置为使用安全传输 (https) 来连接。您需要创建一个 Java 密钥库来保存 SSL 证书。SSL 需要一个 SSL 证书才能在 JIRA 中使用。JIRA 推荐使用 Portecle 应用程序完成以下任务:

  • 创建密钥库
  • 创建 SSL 证书
  • 将证书发送给证书颁发机构,以便进行签名
  • 将证书导入回系统中

完成这些任务后,需要将 Web 服务器配置为使用安全和非安全传输来连接到 JIRA 服务器。

请参阅 JIRA文档来配置 JIRA 服务器的 SSL 设置。请注意,JIRA 文档是特定于版本的,所以请确保文档与您部署的 JIRA 服务器版本相匹配。

生成 JIRA 服务器的 Java 密钥库

对于 JIRA 6.0,请参阅 在 SSL 或 HTTPS 之上运行 JIRA。请安装此 JIRA 文档中的步骤生成 Java 密钥库,然后使用 JIRA 配置工具配置 Web 服务器。

执行更改后重新启动 JIRA 服务器。

重新配置 JIRA 服务器来使用 HTTPS 后,以管理员身份登录到 JIRA 服务器。

  • 在 Administration 选项卡上,选择 System > General Configuration >Edit> Base URL
  • 将 Base URL 从 http://{Fully-Qualified JIRA Server Name}:8082 更改为 https://{Fully-Qualified JIRA Server Name}:8443

将 JIRA Java 密钥库添加到 IBM HTTP Server plugin_cfg.kdb 中

按照以下步骤将 JIRA 密钥库添加到 Keypass Database 文件 plugin-cfg.kdb 中,这允许使用安全传输将用户重定向到 JIRA 服务器。

  1. 将 JIRA 密钥库 (jira.jks) 复制到 IBM HTTP Server。
  2. 访问 http://{Fully-Qualified IBM HTTP Server Name}:5801,以便启动 Web 服务器管理工具
  3. 启动 Key Management Utility (IKeyMan)。
  4. 打开 /opt/IBM/Plugins/config/webserver1/plugin-cfg.kdb
  5. 导入 jira.jks
    • 备注:对于 export/import 选项,默认设置为 export。确保您选择了 import。
    • 备注:这是在设置 HTTPS 传输时生成的 JIRA 密钥库。
    • 找到您复制到 IBM HTTP Server 的 JIRA 密钥库。
    • 输入您为 JIRA 密钥库设置的密码。
  6. 将 plugin-cfg.kdb 和 plugin-cfg.rdb 复制到 /opt/IBM/Plugins/config/webservermerge

自定义 IBM HTTP Server 配置

您需要修改 IBM HTTP Server 插件和配置文件,让第三方服务器和适配器能通过反向代理进行通信。您还需要为 JIRA 服务器建立和安装 Apache® Tomcat® 连接器。

自定义插件

对 IBM HTTP Server 配置执行更改之前,请备份以下文件:

  • /opt/IBM/Plugins/config/webservermerge/plugin-cfg.xml
  • /opt/IBM/HTTPServer/conf/httpd.conf

备注:如果直接在 IBM HTTP Server 上执行更改,请禁用来自 IBM WebSphere Application Server 管理控制台的传播式更新。

  1. 登录到 IBM WebSphere Application Server 管理控制台。
  2. 选择 Server Types > Web servers > webserverx > Plug-in properties
  3. 取消选择 Automatically propagate plug-in configuration file

清单 1 是 plugin-cfg.xml,其中已对第三方服务器和适配器的修改使用加粗的斜体 突出显示。因为 Git 适配器安装在 Jazz Team Server 上,所以还需要指定 Jazz Team Server 主机名。对于 IBM WebSphere Application Server 8.5.5(或更高版本),您需要指定全局 <config> 元素中的 UseInsecure 属性。

清单 1. 自定义的 plugin-cfg.xml

<?xml version="1.0" encoding="ISO-8859-1"?><!--HTTP server plugin config file for the webserver CloudBurstCell_1.{fully qualified domain name}-node.webserver1 generated on 2013.07.18 at 10:55:17 PM UTC-->
<Config ASDisableNagle="false" AcceptAllContent="true" AppServerPortPreference="HostHeader" ChunkedResponse="false" FIPSEnable="false" FailoverToNext="false" HTTPMaxHeaders="300" IISDisableNagle="false" IISPluginPriority="High" IgnoreDNSFailures="false" OS400ConvertQueryStringToJobCCSID="false" RefreshInterval="60" ResponseChunkSize="64" SSLConsolidate="true" TrustedProxyEnable="false" VHostMatchingCompat="false" UseInsecure="true">
   <Log LogLevel="Trace" Name="/opt/IBM/Plugins/logs/webservermerge/http_plugin.log"/>
   <Property Name="ESIEnable" Value="true"/>
   <Property Name="ESIMaxCacheSize" Value="1024"/>
   <Property Name="ESIInvalidationMonitor" Value="false"/>
   <Property Name="ESIEnableToPassCookies" Value="false"/>
   <Property Name="ESICacheidFull" Value="false"/>
   <Property Name="PluginInstallRoot" Value="/opt/IBM/Plugins/"/>
   <VirtualHostGroup Name="default_host">
      <VirtualHost Name="*:9080"/>
      <VirtualHost Name="*:80"/>
      <VirtualHost Name="*:9443"/>
      <VirtualHost Name="*:5060"/>
      <VirtualHost Name="*:5061"/>
      <VirtualHost Name="*:443"/>
      <VirtualHost Name="*:8080"/>
            <VirtualHost Name="*:8082"/>
            <VirtualHost Name="*:8443"/>
            <VirtualHost Name="*:1025"/>
   </VirtualHostGroup>
   <ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="server1_CloudBurstNode_5_Cluster" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
      <Server ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="CloudBurstNode_5_server1" ServerIOTimeout="900" WaitForContinue="false">
         <Transport Hostname="{Fully-Qualified JTS Server Name}" Port="9080" Protocol="http"/>
         <Transport Hostname="{Fully-Qualified JTS Server Name}" Port="9443" Protocol="https">
            <Property Name="keyring" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.kdb"/>
            <Property Name="stashfile" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.sth"/>
         </Transport>
      </Server>
   </ServerCluster>
   <ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="server1_CloudBurstNode_7_Cluster" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
      <Server ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="CloudBurstNode_7_server1" ServerIOTimeout="900" WaitForContinue="false">
         <Transport Hostname="{Fully-Qualified CCM Server Name}" Port="9080" Protocol="http"/>
         <Transport Hostname="{Fully-Qualified CCM Server Name}" Port="9443" Protocol="https">
            <Property Name="keyring" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.kdb"/>
            <Property Name="stashfile" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.sth"/>
         </Transport>
      </Server>
   </ServerCluster>
   <ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="server1_CloudBurstNode_9_Cluster" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
      <Server ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="CloudBurstNode_9_server1" ServerIOTimeout="900" WaitForContinue="false">
         <Transport Hostname="{Fully-Qualified QM Server Name}" Port="9080" Protocol="http"/>
         <Transport Hostname="{Fully-Qualified QM Server Name}" Port="9443" Protocol="https">
            <Property Name="keyring" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.kdb"/>
            <Property Name="stashfile" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.sth"/>
         </Transport>
      </Server>
   </ServerCluster>
   <ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="server1_CloudBurstNode_11_Cluster" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
      <Server ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="CloudBurstNode_11_server1" ServerIOTimeout="900" WaitForContinue="false">
         <Transport Hostname="{Fully-Qualified RM Server Name}" Port="9080" Protocol="http"/>
         <Transport Hostname="{Fully-Qualified RM Server Name}" Port="9443" Protocol="https">
            <Property Name="keyring" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.kdb"/>
            <Property Name="stashfile" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.sth"/>
         </Transport>
      </Server>
   </ServerCluster>
<ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="Adapter_JIRA" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
     <Server ConnectTimeout="5" ExtendedHandshake="false" MaxConnections="-1" Name="JIRA" ServerIOTimeout="900" WaitForContinue="false">
        <Transport Hostname="{Fully-Qualified JIRA Server Name}" Port="8082" Protocol="http"/>
        <Transport Hostname="{Fully-Qualified JIRA Server Name}" Port="8443" Protocol="https">
           <Property Name="keyring" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.kdb"/>
           <Property Name="stashfile" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.sth"/>
        </Transport>
     </Server>
  </ServerCluster>
<ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="Adapter_HPQC" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
     <Server ConnectTimeout="5" ExtendedHandshake="false" MaxConnections="-1" Name="HPQC" ServerIOTimeout="900" WaitForContinue="false">
        <Transport Hostname="{Fully-Qualified HPQC Server Name}" Port="8080" Protocol="http"/>
     </Server>
  </ServerCluster>
<ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="Adapter_GIT" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
     <Server ConnectTimeout="5" ExtendedHandshake="false" MaxConnections="-1" Name="GIT" ServerIOTimeout="900" WaitForContinue="false">
        <Transport Hostname="{Fully-Qualified JTS Server Name}" Port="80" Protocol="http"/>
        <Transport Hostname="{Fully-Qualified JTS Server Name}" Port="9443" Protocol="https">
            <Property Name="keyring" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.kdb"/>
            <Property Name="stashfile" Value="/opt/IBM/Plugins/config/webservermerge/plugin-key.sth"/>
        </Transport>
     </Server>
  </ServerCluster>
<ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="Adapter_GIT1" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
     <Server ConnectTimeout="5" ExtendedHandshake="false" MaxConnections="-1" Name="GIT1" ServerIOTimeout="900" WaitForContinue="false">
        <Transport Hostname="{Fully-Qualified Git Server Name}" Port="80" Protocol="http"/>
     </Server>
  </ServerCluster>
<ServerCluster CloneSeparatorChange="false" GetDWLMTable="false" IgnoreAffinityRequests="true" LoadBalance="Round Robin" Name="Adapter_GIT2" PostBufferSize="64" PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
     <Server ConnectTimeout="5" ExtendedHandshake="false" MaxConnections="-1" Name="GIT2" ServerIOTimeout="900" WaitForContinue="false">
        <Transport Hostname="{Fully-Qualified Git Server Name}" Port="8080" Protocol="http"/>
     </Server>
  </ServerCluster>

   <UriGroup Name="default_host_server1_CloudBurstNode_5_Cluster_URIs">
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/ivt/*"/>
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/jts/*"/>
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/admin/*"/>
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/clmhelp/*"/>
   </UriGroup>
   <UriGroup Name="default_host_server1_CloudBurstNode_7_Cluster_URIs">
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/ivt/*"/>
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/ccm/*"/>
   </UriGroup>
   <UriGroup Name="default_host_server1_CloudBurstNode_9_Cluster_URIs">
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/ivt/*"/>
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/qm/*"/>
   </UriGroup>
   <UriGroup Name="default_host_server1_CloudBurstNode_11_Cluster_URIs">
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/rm/*"/>
      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/converter/*"/>
   </UriGroup>
   <Route ServerCluster="server1_CloudBurstNode_5_Cluster" UriGroup="default_host_server1_CloudBurstNode_5_Cluster_URIs" VirtualHostGroup="default_host"/>
   <Route ServerCluster="server1_CloudBurstNode_7_Cluster" UriGroup="default_host_server1_CloudBurstNode_7_Cluster_URIs" VirtualHostGroup="default_host"/>
   <Route ServerCluster="server1_CloudBurstNode_9_Cluster" UriGroup="default_host_server1_CloudBurstNode_9_Cluster_URIs" VirtualHostGroup="default_host"/>
   <Route ServerCluster="server1_CloudBurstNode_11_Cluster" UriGroup="default_host_server1_CloudBurstNode_11_Cluster_URIs" VirtualHostGroup="default_host"/>
<UriGroup Name="Adapter_JIRA_URIs">
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jspa"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/jira/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/osd.jsp"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/login.jsp"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/MyJiraHome.jspa"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsp"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/secure/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/s/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/plugins/servlet/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/rest/gadget/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/rest/oslc/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/rest/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/secure/Dashboard.jspa/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/browse/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/logout/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/images/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/plugins/servlet/gadgets/dashboard-diagnostics"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/conf/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/captcha"/>
</UriGroup>
<Route ServerCluster="Adapter_JIRA" UriGroup="Adapter_JIRA_URIs" VirtualHostGroup="default_host" />
<UriGroup Name="Adapter_HPQC_URIs">
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/qcbin/*"/>
 </UriGroup>
<Route ServerCluster="Adapter_HPQC" UriGroup="Adapter_HPQC_URIs" VirtualHostGroup="default_host" />
<UriGroup Name="Adapter_GIT_URIs">
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/gitAdapter/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/git/*"/>
</UriGroup>
<Route ServerCluster="Adapter_GIT" UriGroup="Adapter_GIT_URIs" VirtualHostGroup="default_host" />
<UriGroup Name="Adapter_GIT1_URIs">
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/gitweb/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/git/*"/>
</UriGroup>
<Route ServerCluster="Adapter_GIT1" UriGroup="Adapter_GIT1_URIs" VirtualHostGroup="default_host" />
<UriGroup Name="Adapter_GIT2_URIs">
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/gerrit/*"/>
     <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/*"/>
</UriGroup>
<Route ServerCluster="Adapter_GIT2" UriGroup="Adapter_GIT2_URIs" VirtualHostGroup="default_host" />
   <RequestMetrics armEnabled="false" loggingEnabled="false" rmEnabled="false" traceLevel="HOPS">
      <filters enable="false" type="URI">
         <filterValues enable="false" value="/snoop"/>
         <filterValues enable="false" value="/hitcount"/>
      </filters>
      <filters enable="false" type="SOURCE_IP">
         <filterValues enable="false" value="255.255.255.255"/>
         <filterValues enable="false" value="254.254.254.254"/>
      </filters>
      <filters enable="false" type="JMS">
         <filterValues enable="false" value="destination=aaa"/>
      </filters>
      <filters enable="false" type="WEB_SERVICES">
         <filterValues enable="false" value="wsdlPort=aaa:op=bbb:nameSpace=ccc"/>
      </filters>
   </RequestMetrics>
</Config>

构建和安装 Tomcat 连接器

必须安装 Tomcat 连接器 mod_jk.so,以便允许 IBM HTTP Server、JIRA 服务器上的 Apache Tomcat 和 Jazz Team Server 进行协同工作。请注意,这些操作说明来自 https://jazz.net/library/article/64,但并不是所有步骤都是必需的。

在 IBM HTTP Server 上构建和安装最新的 Tomcat 连接器。

  1. 从 http://tomcat.apache.org/download-connectors.cgi 下载 JK 1.2.37 Source Release tar.gz
  2. 从 http://ftp.gnu.org/gnu/{autoconf|libtool|automake} 下载 autoconf、libtool、automake 和 GNU Compiler Collection (GCC) 的最新版本
  3. 以根用户身份打开一个终端窗口和 su
  4. 运行命令 yum install gcc 来安装 GCC
  5. 发出命令 gcc –version 来验证是否安装了最新的版本。
  6. 构建 Tomcat 连接器
    1. mkdir /usr/local/src/NfuseApache
    2. cd /usr/local/src/NfuseApache
    3. cp /{download directory}/tomcat-connectors-1.2.37-src.tar.gz。
    4. 解压连接器包:
      tar xvzf tomcat-connectors-1.2.37-src.tar.gz
    5. export CONNECTOR_HOME=/usr/local/src/NfuseApache/tomcat-connectors-1.2.37-src
    6. 发出命令 echo $CONNECTOR_HOME 来验证该环境变量是否已被设置
    7. cd /usr/local/src/NfuseApache/tomcat-connectors-1.2.37-src/native
    8. 将 autoconfxx.gz、libtoolxx.gz、automakexx.gz 从 /{download directory} 复制到 /usr/local/src/NfuseApache/tomcat-connectors-1.2.37-src/native
    9. 对于每个文件,您都需要进行解压和构建(查阅 INSTALL,了解有关的操作说明)。

       

      tar xvzf
      cd untar'd directory
      ./configure
      make
      make install

       

    10. cd /usr/local/src/NfuseApache/tomcat-connectors-1.2.37-src/native
    11. 执行以下命令

       

      /buildconf.sh
      ./configure --with-
      apxs=/opt/IBM/HTTPServer/bin/apxs
      make
      make install

       

  7. 安装 Tomcat 连接器
    1. cp /usr/local/src/NfuseApache/tomcat-connectors-1.2.37-src/native/apache-2.0/mod_jk.so /opt/IBM/HTTPServer/modules/。
    2. chown {clmadmin} /opt/IBM/HTTPServer/modules/mod_jk.so,其中的 {clmadmin} 是 CLM 管理员用户
    3. chgrp users /opt/IBM/HTTPServer/modules/mod_jk.so

创建 worker.properties

使用以下值创建 IBM HTTP Server 的 /opt/IBM/HTTPServer/conf/worker.properties

worker.list=wrkr
worker.wrkr.port=8443 (per the JIRA server.xml file)
worker.wrkr.host=localhost
worker.wrkr.type=ajp13
worker.wrkr.connection_pool_size=25
worker.wrkr.connection_pool_timeout=600
worker.wrkr.socket_timeout=300

chmod a+x /opt/IBM/HTTPServer/conf/worker.properties

自定义 httpd.conf

将以下指令添加到 /opt/IBM/HTTPServer/conf/httpd.conf 配置文件中,以便允许加载和管理 mod_jk.so。

  1. 加载 mod_jk 模块:
    LoadModule jk_module modules/mod_jk.so
  2. 配置 mod_jk 模块:
    <IfModule worker.c>
     ThreadLimit 25
     ServerLimit 64
     StartServers 2
     MaxClients 600
     MinSpareThreads 25
     MaxSpareThreads 75
     ThreadsPerChild 25
     MaxRequestsPerChild 0
    </IfModule>
  3. 监听适当的端口:
    Listen 8080 (Connecting to HP server)
    
    Listen 8082 (Connecting to the JIRA server using HTTP)
    
    Listen 8443 (Connecting to the JIRA server using HTTPS)
  4. 适当地配置 mod_jk 设置:
    JkWorkersFile "/opt/IBM/HTTPServer/conf/worker.properties"
    JkLogFile  "/opt/IBM/HTTPServer/logs/mod_jk.log"
    JkLogLevel warn
    JkMount /* wrkr

请参阅下载的 httpd.conf 文件,了解所做的自定义。修改已采用加粗的斜体 突出显示。

对 IBM HTTP Server 配置文件执行更改后,应当停止并重新启动该服务器。

结束语

本文介绍了用于开发 IBM Rational Lifecycle Integration Adapters 1.1.1 的拓扑结构。您可以尝试使用一种部门级拓扑结构来了解一种或多种适配器。准备好迁移到更复杂的生产环境时,可使用企业级拓扑结构作为指导。我们提供了一些定义和步骤,作为 信息中心 中的产品文档的补充。

  • 本文相关:
  • 使用XL C/C++编译器中提供的数据访问SQL工具
  • 在大型企业中部署IBM Rational Insight时要考虑的一些要素
  • 创建一个IBM Rational Team Concert应用程序来跟踪机会
  • 使用IBM Rational Developer for AIX and Linux软件进行调试部署
  • 使用PHP、MySQL和AngularJS构建移动友好卡路里计数器
  • Spring Social项目如何连接社交网络的信息
  • Ubuntu桌面版 v13.10 64位图文安装指南
  • 使用Optim Service Interface开发自定义OPtim用户体验的指南
  • CentOS v7.0.1406已正式发布 企业级Linux发行版本
  • init系统:Systemd的简介和特点
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved