任务:消息-使用一个Windows服务来启动WebSphere MQ File Transfer Edition客

任务:消息-使用一个Windows服务来启动WebSphere MQ File Transfer Edition客户端代理

在用户的桌面上用 IBM WebSphere MQ File Transfer Edition 客 户端代理替代 FTP 客户端是向这些文件传输提供企业可见性和可管理性的一个好 方法。用户可以启动 WebSphere MQ File Transfer Edition 代理,或将其放置 到启动文件夹中让 Windows 自动启动它。但如果这个客户端代理需要在 Windows 服务器而不是在桌面上运行,应该怎么办呢?毕竟服务器上没有用户会 话和启动文件夹。可以从 fteStartAgent 创建一个服务,但这种服务启动一个子 进程,因此 Windows 很难监控该进程以重新启动客户端代理。也可以直接调用 fteStartAgent 调用的类,但这需要使用一些没有建档的(undocumented)接口 ,这些接口可能会在未来的版本中更改。如果可能,最好避免使用未建档的功能 。这期 “任务:消息” 将演示如何使用 fteStartAgent 和 WebSphere MQ 触发机制来解决这个问题。

简介

在我最早的 WebSphere MQ File Transfer Edition 部署中,我 的客户端想在一些无人值守的 Windows 服务器上运行 WebSphere MQ File Transfer Edition 客户端代理。尽管 WebSphere MQ File Transfer Edition 现 在不提供一个 Windows 服务了,但要使代理作为后台任务运行并不困难。真正的 麻烦是如何使它们具有弹性。fteStartAgent 命令生成一个子进程然后终止。这 意味着,如果配置为一个 Windows 服务,它要么不能重新启动,要么在每个间隔 都尝试重新启动。我们可以绕过 fteStartAgent 代理调用底层类来直接启动这个 代理,但必须小心翼翼,以免使用已建档的(documented)命令。

我们决 定使用的解决方案是本文的主题。它包含两部分:作为 SupportPac MA7K 提供的 Windows Service Trigger Monitor 程序,和少量以 Perl 编写的 “粘合 剂” 代码。它不仅按照理想的方式启动 WebSphere MQ File Transfer Edition 代理,实际上它还使这个代理非常难以终止。

核心组件是 SupportPac MA7K,它依赖 WebSphere MQ Client。WebSphere MQ Client 作为 SupportPac MQC7 可用。MA7K 服务连接到一个队列管理器并监听所 谓的发起队列(initiation queue)。队列管理器被配置为在这个队列上放置一 条消息,以响应在 WebSphere MQ File Transfer Edition 代理的命令队列 (command queue)中到达的一条消息。收到触发消息时,触发监控器解析将执行 的命令以及任何参数的消息。这些内容被组装到一个正在运行的命令行中,然后 控制在其发起队列上恢复监控的触发监控器的返回结果。

Perl 代码是必要的,因为触发监控器假设将要被启动的程序已被编写来将进 行触发,并将整个 TMC2 触发消息作为一个参数传递。当然,fteStartAgent 程 序是为人类、而不是触发监控器编写的,没有一个 TMC2 结构看起来怎样的概念 。因此,如果直接由触发监控器启动,它将不能运行。一个小型 Perl 程序充当 fteStartAgent 和触发监控器之间的一个 “垫片”,使用 TMC2 参数并将其转换 为 fteStartAgent 本机参数值。Perl 因其字符串处理功能而被选中,且它被安 装在所有版本的 Windows 服务器上,且随时可用。它也可以被编译为一个本机 Windows 可执行文件,这种文件无需安装 Perl 即可运行。

最后的步骤是配置队列管理器以进行触发。这包括定义一个进程对象和在代理 命令队列上启用触发。进程定义包括将用于启动代理的完全限定命令,以及将被 启动的代理的名称。

当我们在这个项目上安装第一个代理触发监控器后,我们发现了其他一些好处 。单个触发监控器能够处理同一个 Windows 服务器上的任意数量的代理。使用触 发监控器还意味着 WebSphere MQ 管理员可以从队列管理器启动或停止远程客户 端代理,而无需登录运行代理的 Windows 服务器。我的客户遇到的一个问题是 WebSphere MQ 管理员不能直接访问 Windows 服务器,在这种情况下,远程启动 和停止代理的能力尤其有用。

下面的步骤将帮助您设置您自己的 Windows 客户端触发监控器,以启动 WebSphere MQ File Transfer Edition 代理。这些说明假定 WebSphere MQ File Transfer Edition 客户端代理已安装到 C:\IBM\WMQFTE 且配置目录是 C:\IBM\WMQFTE\config。我发现,如果使用没有嵌入空格的短路径名,那么在 Windows 上管理 WebSphere MQ File Transfer Edition 将容易得多。运行触发 监控器的帐户的路径中应该有 C:\IBM\WMQFTE\bin 和 Perl 运行时。在开始安装 本文介绍的工具之前,最好配置 WebSphere MQ File Transfer Edition 代理并 确保其正确运行。

设置并测试一个 Windows 客户端触发监控器

安装 fteTriggerAgent.pl

下载 fteTriggerAgent.pl 文件并将其放置到 WebSphere MQ File Transfer Edition 代理将运行的服务器上的 C:\IBM\WMQFTE\bin 目录中。

这个脚本假定 WebSphere MQ File Transfer Edition 安装在 C:\IBM\WMQFTE\ 中,并试图将日志文件写入 C:\IBM\WMQFTE\Logs。如果上述路 径不存在,脚本将尝试创建它。如果您希望来自 fteTriggerAgent.pl 脚本的日 志文件被写入到一个不同的目录,则需要更改位于脚本顶部附近的 $LogPath 变 量。

这个脚本文件应该与 C:\IBM\WMQFTE\bin 中的其余文件拥有相同的所有权和 权限。要运行此脚本,.pl 扩展名应该与 Perl 可执行文件关联。(如果您想将 这个脚本编译为一个可执行文件,请查看来自 Active State 的 Perl Pro Studio。)

时间: 2024-11-01 07:08:57

任务:消息-使用一个Windows服务来启动WebSphere MQ File Transfer Edition客的相关文章

c++-自己编写的一个windows服务不能启动

问题描述 自己编写的一个windows服务不能启动 我用C++编写了一个简单的windows服务,服务的任务是服务启动后向文件中循环写入文字,我的服务可以安装,但是启动时会显示本地计算机上的 xx服务启动后停止,我的电脑加入了公司的域,请问跟加域有关系吗? 解决方案 你是不是把代码逻辑写在OnStart里面了?你需要在OnStart中启动一个线程,并且用死循环保持住线程,将真正的逻辑写在里面. 解决方案二: 当然,否则OnStart执行完,没有保持住的线程,程序就停了.你可以google一些别人

怎么解决Win7出现未能连接一个Windows服务?

  近日有网友"所爱隔山海"Win7电脑在开机的时候遇到了开机很慢,开机后提示:未能连接一个Windows服务.如果遇到电脑出现未能连接一个Windows服务该如何解决呢?这就是小编今天要分享的一个电脑小技巧. Win7出现"未能连接一个Windows服务"错误提示,主要是由于电脑系统中的"System Event Notification"服务没有正常开启导致的,可能是用户在使用一些第三方安全软件优化开机启动项的时候,不小心禁用了此服务,只需重

Win7出现未能连接一个Windows服务的解决办法

  近日有网友"所爱隔山海"Win7电脑在开机的时候遇到了开机很慢,开机后提示:未能连接一个Windows服务.如果遇到电脑出现未能连接一个Windows服务该如何解决呢?这就是小编今天要分享的一个电脑小技巧. Win7出现"未能连接一个Windows服务"错误提示,主要是由于电脑系统中的"System Event Notification"服务没有正常开启导致的,可能是用户在使用一些第三方安全软件优化开机启动项的时候,不小心禁用了此服务,只需重

轻松解决Win732位旗舰版"未能连接一个Windows服务"问题

不少Win732位旗舰版用户在使用过程中都遇上了系统经常弹出"未能连接一个Windows服务"的问题,另不少用户素手无策,那么我们怎么操作才能让这个问题得以解决呢?下面小编通过实践找到了解决问题的方法. 从未能连接一个windows服务的详细信息来看,问题出在了,System Event Notification Service服务.所以我们可以在Win7命令行下关于System Event Notification Service服务启动问题进行处理,接下来小编带大家一起来解决这个问

【分享】中文分词服务器源代码&词库,一个简单的webserver,同时又还是一个Scoket server,又是一个windows服务

问题描述 [分享]中文分词服务器源代码&词库,一个简单的webserver,同时又还是一个Scoketserver,又是一个windows服务软件名称:藏拙简易中文分词服务器作者:藏拙具体使用时可将cangzhuo.dat放在分词服务器相同的目录即可使用前请先启动分词服务器藏拙简易中文分词服务器(C语言开发+词库+源代码),最大特色可以让javascript来调用!高速下载地址1:分词服务器程序既是一个windows服务程序,服务名称是:cangzhuofenciserviceandserve0

win8.1不能连接一个Windows服务怎么办

win8.1不能连接一个Windows服务怎么办   解决方法 1.进入Win8.1安全模式,并记录用户电脑需要登录的用户名(即出现问题,无法登录的用户名)(例如:administrator); 2.进入安全模式后,找到C:\windows\regedit.exe,双击regedit文件,打开"注册表编辑器"; (或者点击开始菜单,然后在"开始搜索"中输入regedit,然后点击搜索出来的"regedit.exe") 3.在注册表编辑器中,找到&

win7提示“未能连接一个Windows服务”怎么办?

  我的电脑是Win7系统,以前用的一直好好的,现在总是弹出:Windows7 未能连接一个windows 服务,这是怎么回事?怎么解决? 1.Win+R打开运行,然后运行CMD 2.在CMD里输入"NETSH WINSOCK RESET CATALOG" 命令,然后重新启动System Event Notification Service服务.如果提示出错,进入安全模式,重新运行CMD,输入"NETSH WINSOCK RESET CATALOG" 命令,然后重新

解决win7未能连接一个windows服务问题

1.我们先使用命令模式看能解决不,我们只需要按下win+R 然后在运行框中输入 cmd命令打开 2.在弹出的cmd模式输入:NETSH WINSOCK RESET CATALOG完成后,按回车键运行一次,就可以开启system event notification服务了 好了等待命令运行之后我们看看还会弹出win7未能连接一个windows服务错误不,如果没有问题就解决了哦. 方法二,如果方法一无法解决我们只有重新安装系统来解决了.

C#创建、安装一个Windows服务

关于WIndows服务的介绍,之前写过一篇:http://blog.csdn.net/yysyangyangyangshan/article/details/7295739.可能这里对如何写一个服务不是很详细.现在纯用代码的形式介绍一下windows服务是如何开发和安装的. 开发环境:Win7 32位:工具:visualstudio2010. 因为win7自带的就有.net环境,算是偷一下懒吧.因为无论是手动安装或程序安装都要用到.一个目录(默认C盘为操作系统的情况):C:\Windows\Mi