实习两个多月,主要的工作就是弄IBM的Websphere MQ,最终的成果是做出了一个Websphere MQ的远程查看软件。
详细代码和包:http://download.csdn.net/detail/dolphin29/6696431
下面是详细介绍。
WebSphere MQ (也称MQSeries)以一致的、可靠的和易于管理的方式来连接应用程序,并为跨部门、企业范围的集成提供了可靠的基础。该程序支持了大量的数据传输,需要随时对该队列的详细情况进行查看,而对Websphere MQ状态的查看有两种方式:
1、在CMD环境下用语句查看;
2、打开MQ资源管理器在图形界面进行查看。
一般情况下,以上两种对WebsphereMQ信息的查看方式,都局只限于接收和发送端计算机上,在第三方的计算机上是无法用这两种方式查看的。该软件实现了在第三方计算机上查看WebsphereMQ信息的功能。
该软件具备了以下功能:
1、 登录功能:初始的登陆界面提示用户输入Websphere MQ所在计算机的用户名、密码、ip地址,获取这些信息之后建立与目标计算机的连接,并且查询目标计算机上包含的管理器与队列。
2、 生成界面:通过获取到的管理器和队列,动态生成显示树形菜单。
3、 点击查询功能:在用户点击树形菜单中的管理器或队列时,生成对应的查询语句并且发送到目标计算机,在图形界面显示对应的返回值。
4、 退出功能:断开与目标计算机的连接,返回登录界面。
在收发端的计算机上,可以用以下CMD指令查看Websphere MQ信息:
1、 查看Websphere MQ的详细信息:dspmqver
2、 显示本机上的所有管理器:dpsmq
3、 进入管理器并且查看具体信息:runmqsc + 管理器id , display + 具体要查看的内容
在第三方计算机上,利用telnet的功能连接到要查看的计算机。登录之后输入相关的Websphere MQ命令并且获取返值,这样实现第三方计算机的查看功能。
由于该软件调用到telnet的功能,所以必须导入commons-net这个jar包。其余使用的包都为eclips自带,无须另外导入。
该软件由两个模块组成:图形界面的模块TreeTest、处理连接查询的模块TelnetOperator。
1、 void login ( )函数负责登录功能
2、 String getdspmqver()函数处理并返回dspmqver(MQ详细信息)
3、 ArrayList getqm(String str)函数处理dspmq(即MQ的队列信息,用getdspmq函数获取),返回的是一个包含每个队列名称的集合类
4、 ArrayList getstatus(ArrayListqm)函数输入所有管理器的集合类(该集合类由getqm( )函数生成),返回两个重要的对象:一个表示树形菜单结构的参数,所有队列(格式为:所属管理器id+队列id,由于不同管理器下的队列id可以相同,格式上必须加上所属管理器id)。
5、 void write(String value)函数负责传输命令
6、 String readUntil(Stringpattern)函数负责读取返回值
7、 disconnect()函数断开与目标计算机的连接
1、 按键“登录”监听:调用TelnetOperator中的登录功能,获取相关的参数,执行getjScrollPane、getExitPane 、getJEditorPane三个函数生成面板
2、 按键“退出登录”菜单监听:执行TelnetOperator类中的disconnect ()函数断开连接,清除已有组件,重新显示登录面板
3、 树形菜单监听:点击到MQ时候会显示TelnetOperato中的dspmqver信息;点击到管理器或者队列时,会通过getjTA()函数生成对应的信息并且显示出来,
4、 getjScrollPane(telnetOperator.qm, telnetOperator.queue, telnetOperator.treestatus)函数的生成了图形界面左下方的树形菜单
5、 getExitPanel()函数生成左上角的退出面板
6、 getJEditorPane()函数生成了右边的信息面板
7、 getLoginPanel()函数生成登录的面板
8、 getJContentPane()函数生成了一个面板容器来容纳各种组件
9、 initialize()函数负责初始化
10、 getjTA()函数根据点击的管理器或者队列,返回显示详细信息,其中有筛选功能(选出部分重要的参数进行显示)和汉化功能(将属性名翻译为中文)
1、连接不上指定ip的计算机(ip错误或者计算机处于关闭状态);
2、已连接上指定ip的计算机,用户名或者密码错误。
3、已经接上指定ip的计算机,已成功登录,但该计算机上未安装Websphere MQ,导致无法识别mq的语句。
当管理器处于关闭状态时,是无法用runmqsc这个命令去管理器进行查询的;而该软件在设计的时候没有考虑到管理器处于关闭的情况。
解决方法:
这个问题可以在getdspmqver()函数中进行解决,输入dspmq之后多返回一个管理器的状态值。在读取管理器id之后,加上读取状态的语句,在valueChanged监听中加入点击时对管理器状态的判定:
若管理器运行,则继续查询;
若管理器关闭,则跳出查询,并且返回管理器关闭的提示。
在显示详细信息时只对部分较为重要的属性名执行了汉化和显示,但未考虑部分字符串形式的属性值。在getjTA()函数中,可以参照翻译属性名的格式添加翻译属性值的代码;可以对需要显示的属性值进行设设置和翻译