BizTalk Server 2006中使用MQSeries适配器问题处理

BizTalk Server 2006中使用MQSeries适配器问题处理

发布日期: 2006-07-07 | 更新日期: 2006-07-07
作者:郑佐
测试环境: Windows Server 2003BizTalk Server 2006IBM WebSphere MQ 6.0
Windows
非域环境

前段时间在测试BizTalk Server 2006 中新增加的MQSeries适配器时,出现一些问题,花了不少时间来调试。在BizTalk ServerIBM WebSphere MQ同时部署在本地情况下,消息队列访问调试成功。两个系统分开部署到不同计算机上时,还存在一些问题。笔者邀请微软全球技术中心的BizTalk工程师协助。由于BizTalk工程师所用的测试环境在Windows域中,调试很顺利,而笔者的测试环境是工作组,在断断续续调试了一星期后,访问远程MQ服务器成功。笔者在这里写下适用于本地和远程的配置过程,供碰到类似问题的朋友参考。

配置BizTalk MQSeries 代理

要使用MQSeries适配器,在安装软件时,需要先安装IBM WebSphere MQ 6.0(或5.3版本),然后在安装BizTalk Server 2006时选中MQSeries代理组件。在安装成功后通过“开始”菜单--“程序”--Microsoft BizTalk Server 2006--BizTalk MQSeries 代理配置向导”来对MQ代理进行配置,也可以在命令行中运行“MQSConfigWiz.exe”启动配置向导,卸载配置可以通过“MQSConfigWiz.exe –u”命令完成。在“设置应用程序标识窗口”中选择“以下用户”单选按钮。输入管理员用户名和密码完成配置向导。在“开始”菜单“运行”中输入“DCOMCNFG.EXE”打开“组件服务”,如下图所示。

BizTalk Server 2006中使用MQSeries适配器问题处理_第1张图片

 
MQSAgent2
就是通过向导生成的COM+应用程序,展开“角色”子节点,可以看到我们在设置向导中输入的Administrator用户。不管是远程还是本地,被BizTalk Server 适配器访问的IBM WebSphere MQ的计算机上都必须安装MQSeries 代理。

配置MSDTC

在相关的每台计算机(BizTalk ServerIBM WebSphere MQ)上进行如下操作,下面是在Windwos Server 2003上的操作步骤,
1.单击“开始”,指向“控制面板”,然后单击“添加或删除程序”。
2.
在“添加或删除程序”对话框中,单击“添加/删除 Windows 组件”。
3.
在“Windows 组件”页上,选择“应用程序服务器”,然后单击“详细信息”。
4.
选择“启用网络 COM+ 访问”,单击“确定”,然后单击“下一步”。
5.
在“完成 Windows 组件向导”页上,单击“完成”。
6.
关闭“添加或删除程序”对话框。
7.
单击“开始”,依次指向“所有程序”、“管理工具”,然后单击“组件服务”。
8.
展开“组件服务”,然后展开“计算机”。
9.
右键单击“我的电脑”,选择“属性”,然后单击“属性”。
10.
选择“MSDTC”选项卡,然后单击“安全配置”。
11.
在“安全设置”窗格中,选中以下选项:
    网络 DTC 访问
        允许远程客户端
        允许远程管理
        允许入站
        允许出站
        注意   Windows Server 2003 群集环境中,请确保选中要求对呼叫方进行验证。必须选择此事务模式。
    启用 XA 事务
12.
单击“确定”。
13.
在“DTC 控制台消息”对话框中,单击“是”重新启动 DTC
14.
在“DTC 控制台消息”对话框中,单击“确定”确认 DTC 已重新启动。
15.
单击“确定”关闭“我的电脑属性”对话框。
16.
关闭“组件服务 MMC”。

注意事项:
事务管理器通信的三个单选项为

    要求对双方进行验证
    要求对呼叫方进行验证
    不要求进行验证

针对该设置不同情况需要区别对待,不同的情况组合为
(1)   
安装的系统是Windows Server 2000版本、不带SP2的WindowsXP 、不带SP1的Windows 2003系统,带SP2的WindowsXP 、带SP1的Windows 2003系统。
(2)   
Windows系统所在的计算机是在一个域中还是在多个域中,还是在工作组中。

以上的设置不一定能够使MSDTC正常运行,比如系统防火墙的设置也有可能导致运行不正常,针对使用MSDTC出现的问题,可访问 http://go.microsoft.com/fwlink/?LinkId=61920寻找参考答案。

配置 MQSAgent2 COM+ 应用程序

在访问队列管理器时能够列出服务器队列管理器列表,在点击队列列表时出现“无法连接到队列管理器。该管理器不存在或尚未启动。”。

造成该问题是由于MQSAgent2设置的应用程序标识权限不够造成。
解决步骤如下:
1.
COM+应用程序MQSAgent2节点中右键点击“属性”菜单,在属性窗口的‘高级’属性设置中,取消选定‘禁止删除’与‘禁止修改’选项。
2.
COM+应用程序MQSAgent2的‘标识’属性设置中使用管理员用户。
3.
并确认在MQSAgent2“角色”子节点中包含在“标识”选项卡中输入的用户。
4.
MQSAgent2节点中右键点击“关闭”菜单,再点击“启动”菜单使新设置启用。
5.
重启BizTalk服务,重新打开BizTalk管理控制台,此时则可选择远程队列管理器。

MQSeries适配器的队列定义中访问远程或本地MQSeries服务器时出现80070005错误。
错误一:从计算机192.192.132.81CLSID为{86E96D72-0011-4B28-B1AC-BF52AB47F1B4}的远程组件检索COM类工厂失败,原因是出现以下错误:80070005
错误二:无法将类型为“System.__ComObject”的COM对象强制转换为接口类型“Microsoft.BizTalk.Adapter.MQS.Agent.IMQSAdminQuery”。此操作失败的原因是对IID为“{DFF3C85A-9587-49DE-A4E3-6791F5FF4AB5}”的接口的COM组件调用QueryInterface因以下错误而失败:拒绝访问。(异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))

出现这些问题是在非域环境中,访问远程COM+应用程序时权限检查失败导致。

解决步骤如下:
1.
在组件服务控制台中,打开组件服务--我的电脑--属性--COM安全--启动和激活权限--编辑限制,加入ANONYMOUS LOGON账号,给予其远程启动和远程激活权限。
2.
COM+应用程序MQSAgent2的‘高级’属性设置中,取消选定‘禁止删除’与‘禁止修改’选项。
3.
COM+应用程序MQSAgent2的‘安全’属性设置中,取消选定‘对此应用程序强制进行访问权限检查’,并将‘调用的身份验证级别’设置为无。
4.
MQSAgent2节点中右键点击“关闭”菜单,再点击“启动”菜单使新设置启用。
5.
重启BizTalk服务,重新打开BizTalk管理控制台,此时则可选择远程队列管理器。
6.展开“组件服务”,然后展开“计算机”。右键单击“我的电脑”,选择“属性”,然后单击“属性”选择“默认属性”属性选项卡,在“默认身份验证级别”中选择“无”。

其他资源

对用于分布式访问的用户,建议把用户都加入到Windows的“Distributed COM Users”用户组。通过在注册表中添加下面的数据,

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Ole]
"ActivationFailureLoggingLevel"=dword:00000001
"CallFailureLoggingLevel"=dword:00000001 

然后重新启动系统来启用DCOM日志,这样在调试的时候如果出现错误可以在系统日志中看到DCOM日志信息。

 

你可能感兴趣的:(BizTalk Server 2006中使用MQSeries适配器问题处理)