使用wsadmin脚本创建MQQueueConnectionFactory - JACL篇第一部分

本文详细介绍了如何使用IBM WebSphere的wsadmin工具和JACL脚本语言自动化创建MQ队列连接工厂,包含完整的配置步骤、参数说明和实际代码示例,帮助系统管理员提升配置效率。

使用wsadmin脚本创建MQQueueConnectionFactory - JACL篇第一部分

在处理一些冗长的Java代码时,我遇到了这个巨大的沙堆,它耗尽了我仅存的每一分耐心。这是我们每两天都会面临的困境:配置!!

当我讽刺的内心却在向我表示祝贺。现在,你到底期望我如何开始配置?

那么,我的具体问题是什么?我有一个MQ、工厂、数据源、提供者等的列表需要配置。每次在RAD(Rational Application Developer)上创建新配置文件时,我都必须手动进入管理控制台进行配置。

凭借我所熟悉的那点无用的Linux知识,我无法忍受点击操作,至少在编程时是这样。

由于我正在使用WebSphere,而它在所有这些名称中是个大块头,我以为开发人员会很聪明,至少为像我这样的人提供了一些内置工具。好吧,猜猜看,我是对的。

IBM提供了两种脚本语言:

  • JACL
  • Jython

如果我没记错的话,JACL将在未来的版本中被弃用,而Jython将成为我们的脚本工具。

在本文中,我将简要介绍JACL,并在下一版本中转向Jython,届时我们将能够在WebSphere中配置数据源。

那么,JACL到底是什么?或者发音为“JACKAL”。

Jacl,即Java命令语言,非常类似于/是tcl脚本语言的Java版本。它运行在JVM上,就像我们听说的JRuby一样,解释器完全用Java编写。

有关语言本身的更多详细信息,您可以访问这里

让我们开始正题:如何使用wsadmin和JACL创建WebSphere MQ连接工厂。

您可能已经拥有队列的一些详细信息,但有些需要提取。

步骤1

识别工厂的提供者。默认情况下这是它的名称。如果您使用不同的名称创建了新的提供者,请在此处指定。

1
set tmp1 "WebSphere MQ JMS Provider"

步骤2

现在您需要找到服务器的单元名称和节点名称。

我的WebSphere配置文件节点配置文件的典型位置如下:

1
C:\Programs\IBM\Rational\SDP\6.0\runtimes\base_v6\profiles\test_wsp\config\cells\BNode05Cell\nodes\BNode05

此位置中的单元名称在\cells\之后,即BNode05Cell。 节点名称在末尾\nodes\之后,即BNode05。

1
set newjmsp [$AdminConfig getid /Cell:CELLNAMECell/Node:NODENAME/JMSProvider:$tmp1/]

步骤3

现在您需要指定工厂属性。

我计划设置的属性如下: 名称、jndiName、QueueManager、sname、端口、通道、ttype、xaenabled。

要检查工厂所需的参数,您可以在wsadmin控制台上运行以下命令:

1
$AdminConfig required WASQueueConnectionFactory

示例输出:

1
2
3
4
wsadmin $AdminConfig required WASQueueConnectionFactory
Attribute                       Type
name                            String
jndiName                        String

我在哪里可以找到wsadmin? 它通常位于服务器的bin目录中。

在我的情况下,它位于我的RAD安装目录中:

1
../Rational/SDP/6.0/runtimes/base_v6/bin

要调用wasadmin,只需打开终端并移动到bin目录,然后输入wsadmin即可调用。这样做将调用默认配置文件。如果要指定配置文件,请使用开关-profileName YOURPROFILENAME

要查看所有必需和可选参数,请在控制台上写入以下命令:

1
$AdminConfig attributes WASQueueConnectionFactory

示例输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
wsadmin $AdminConfig attributes WASQueueConnectionFactory
"XAEnabled boolean"
"authDataAlias String"
"authMechanismPreference ENUM(BASIC_PASSWORD, KERBEROS)"
"category String"
"connectionPool ConnectionPool"
"description String"
"jndiName String"
"logMissingTransactionContext boolean"
"manageCachedHandles boolean"
"mapping MappingModule"
"name String"
"node String"
"preTestConfig ConnectionTest"
"propertySet J2EEResourcePropertySet"
"provider J2EEResourceProvider@"
"providerType String"
"serverName String"
"sessionPool ConnectionPool"
"xaRecoveryAuthAlias String"

我为那些使用额外选项的人添加了一些额外的可选参数。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
set name [list name NAME]

set jndi [list jndiName jms/JNDINAME]

set qManager [list queueManager QMANAGER]

set sname [list host HOSTNAME]

set port [list port 1414]

set channel [list channel CHANNEL]

set ttype [list transportType CLIENT]

set xa [list XAEnabled True|false]

步骤4

现在将所有参数设置在一个字符串中,以便它们可以作为一体传递给命令。

1
set mqcfAttrs [list $name $jndi $qManager $sname $port $channel $ttype $xa]

步骤5

现在使用以下命令创建工厂。这将把工厂添加到步骤2中提到的节点和单元。

1
$AdminConfig create MQQueueConnectionFactory $newjmsp $mqcfAttrs

创建后,它不会被保存,仅保留在当前会话中。因此,要保存它,请运行以下命令。您应该全部设置好了。

1
$AdminConfig save

您也可以将此脚本保存在本地系统的文件中。并通过将其传递给wasadmin来运行它。以下是一个示例命令:

1
wsadmin -profileName test_wsp -f $SCRIPT_FILENAME_LOCATION$

完整代码列表如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
set tmp1 "WebSphere MQ JMS Provider"

set newjmsp [$AdminConfig getid /Cell:CELLNAMECell/Node:NODENAME/JMSProvider:$tmp1/]

set name [list name NAME]

set jndi [list jndiName jms/JNDINAME]

set qManager [list queueManager QMANAGER]

set sname [list host HOSTNAME]

set port [list port 1414]

set channel [list channel CHANNEL]

set ttype [list transportType CLIENT]

set xa [list XAEnabled false]

set mqcfAttrs [list $name $jndi $qManager $sname $port $channel $ttype $xa]

$AdminConfig create MQQueueConnectionFactory $newjmsp $mqcfAttrs

$AdminConfig save
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计