带有 -connectionNameList 选项的 WebSphere Jython createWMQConnectionFactory NullPointerException
WebSphere Jython createWMQConnectionFactory NullPointerException with -connectionNameList option
根据 IBM 文档,以下是使用 Jython 编写队列连接工厂脚本的正确方法。但是,无论何时添加 -connectionNameList 选项,我都会收到 NullPointerError。如果我删除 -connectionNameList,或者如果我用空字符串代替主机名,错误就会消失。
我们正在使用 WebSphere 8.5.5.9
这是第 335 行(我替换了主机名):
AdminTask.createWMQConnectionFactory(scopeID,'[-type QCF -name someQCF -jndiName jms/someCF -wmqTransportType BINDINGS_THEN_CLIENT -qmgrSvrconnChannel SYSTEM.DEF.SVRCONN -qmgrHostname -connectionNameList host(1234),host(1234) ]')
错误:
Exception caught during execution:
type <java function type at 613319364>
value com.ibm.ws.scripting.ScriptingException: java.lang.NullPointerException: java.lang.NullPointerException
tb Traceback (innermost last):
File "<string>", line 383, in install_server
File "<string>", line 335, in createWMQConnectionFactory
更新: 当 运行 直接从 wsadmin> 提示符时,这些命令有效。但是,当使用 jython 从 python 脚本中 运行 时,它们不会出现 return 上面显示的 NullPointerException。
变量 scopeID 可能包含无效的配置 ID。查看您尝试在其中创建 MQ Conn Factory 的配置文件的 ffdc 目录。如果您看到这样的内容:
[6/29/16 7:40:04:169 MDT] FFDC Exception:java.lang.NullPointerException
SourceId:com.ibm.websphere.management.async.client.AsyncCommandClient.execute
ProbeId:187 Reporter:java.lang.Class@7e78ccb4
java.lang.NullPointerException
at com.ibm.websphere.management.configservice.ConfigServiceHelper.getObjectLocation(ConfigServiceHelper.java:258)
at com.ibm.ws.messaging.admin.command.WMQCommandHelper.checkScope(WMQCommandHelper.java:156)
您的 scopeID 变量无效。查看 IBM KnowledgeCenter topic related to wsadmin,这里是获取 scopeID 值的方法:
scopeID = AdminConfig.getid('/Node:mynode/')
将 Node:mynode 替换为适合您的配置的范围值。如果您在调用 AdminTask 之前在您的脚本中打印 scopeID 的值,您将能够看到它的格式是否正确。这是一个有效的单元范围配置 ID 的示例:
wsadmin>print scopeID
MyNode03Cell(cells/MyNode03Cell|cell.xml#Cell_1)
我解决了我的问题。
我得到的脚本 运行 这个有
-conntype NONE
选项设置在 ./wsadmin.sh
我删除了它,现在可以使用了。很奇怪,这个选项只影响了那个功能。
根据 IBM 文档,以下是使用 Jython 编写队列连接工厂脚本的正确方法。但是,无论何时添加 -connectionNameList 选项,我都会收到 NullPointerError。如果我删除 -connectionNameList,或者如果我用空字符串代替主机名,错误就会消失。
我们正在使用 WebSphere 8.5.5.9
这是第 335 行(我替换了主机名):
AdminTask.createWMQConnectionFactory(scopeID,'[-type QCF -name someQCF -jndiName jms/someCF -wmqTransportType BINDINGS_THEN_CLIENT -qmgrSvrconnChannel SYSTEM.DEF.SVRCONN -qmgrHostname -connectionNameList host(1234),host(1234) ]')
错误:
Exception caught during execution:
type <java function type at 613319364>
value com.ibm.ws.scripting.ScriptingException: java.lang.NullPointerException: java.lang.NullPointerException
tb Traceback (innermost last):
File "<string>", line 383, in install_server
File "<string>", line 335, in createWMQConnectionFactory
更新: 当 运行 直接从 wsadmin> 提示符时,这些命令有效。但是,当使用 jython 从 python 脚本中 运行 时,它们不会出现 return 上面显示的 NullPointerException。
变量 scopeID 可能包含无效的配置 ID。查看您尝试在其中创建 MQ Conn Factory 的配置文件的 ffdc 目录。如果您看到这样的内容:
[6/29/16 7:40:04:169 MDT] FFDC Exception:java.lang.NullPointerException
SourceId:com.ibm.websphere.management.async.client.AsyncCommandClient.execute ProbeId:187 Reporter:java.lang.Class@7e78ccb4 java.lang.NullPointerException at com.ibm.websphere.management.configservice.ConfigServiceHelper.getObjectLocation(ConfigServiceHelper.java:258) at com.ibm.ws.messaging.admin.command.WMQCommandHelper.checkScope(WMQCommandHelper.java:156)
您的 scopeID 变量无效。查看 IBM KnowledgeCenter topic related to wsadmin,这里是获取 scopeID 值的方法:
scopeID = AdminConfig.getid('/Node:mynode/')
将 Node:mynode 替换为适合您的配置的范围值。如果您在调用 AdminTask 之前在您的脚本中打印 scopeID 的值,您将能够看到它的格式是否正确。这是一个有效的单元范围配置 ID 的示例:
wsadmin>print scopeID
MyNode03Cell(cells/MyNode03Cell|cell.xml#Cell_1)
我解决了我的问题。
我得到的脚本 运行 这个有
-conntype NONE
选项设置在 ./wsadmin.sh
我删除了它,现在可以使用了。很奇怪,这个选项只影响了那个功能。