Java com.ibm.mq.MQException:MQJE001:完成代码';2';,原因';2035年&x27年;

Java com.ibm.mq.MQException:MQJE001:完成代码';2';,原因';2035年&x27年;,java,windows,ibm-mq,Java,Windows,Ibm Mq,我正在构建一个Java应用程序,该应用程序应该能够连接到IBM WebSphere MQ队列管理器,但我无法理解为什么不断出现此错误 我已经通过MQ资源管理器使用setmqaut为我的用户ID授予了管理权限。我还在我的频道中定义了MCAUSER,并将该用户与mqwindows组相关联 任何人都可以给出一个简短的教程/示例,说明如何在Windows环境中将Java程序与WebSphere MQ安装连接起来吗?如果您在通道中设置了MCAUSER,那么这将覆盖客户端提供的任何ID。如果你仍然得到203

我正在构建一个Java应用程序,该应用程序应该能够连接到IBM WebSphere MQ队列管理器,但我无法理解为什么不断出现此错误

我已经通过MQ资源管理器使用
setmqaut
为我的用户ID授予了管理权限。我还在我的频道中定义了
MCAUSER
,并将该用户与mqwindows组相关联


任何人都可以给出一个简短的教程/示例,说明如何在Windows环境中将Java程序与WebSphere MQ安装连接起来吗?

如果您在通道中设置了
MCAUSER
,那么这将覆盖客户端提供的任何ID。如果你仍然得到2035,那么有两种可能性。第一个问题是,
MCAUSER
中的ID没有使用
setmqaut
命令正确授权。第二个(至少对于Windows而言)是它不是正确的ID。例如,如果频道定义使用
MCAUSER(userx)
而不是
MCAUSER('x')userx@domain”)
则完全有可能显示的ID与WMQ解析的SID不同。当在笔记本电脑和WMQ服务器上定义了
userx
时,可能会发生这种情况。服务器必须能够解析提供给它附带的SID的ID

关于CHLAUTH规则,WMQ v7.1还有其他注意事项。如果显示的ID具有管理权限,默认情况下WMQ将在所有通道上阻止它。这是因为管理ID可以完全访问WMQ,并且可以使用WMQ服务或触发功能在QMgr的主机服务器上远程执行代码。因此,如果您有WMQ v7.1,您需要在所需通道上启用WMQ admin访问,或者使用非管理用户ID进行连接

最后,调试所有这些的最简单方法是在QMgr上启用授权事件并安装到WMQ Explorer中。这将在每次出现2035事件时生成一条事件消息,然后MS0P插件将其解析为人类可读的格式。消息会告诉你

  • 什么API调用失败了。(
    连接
    打开
    关闭
  • API调用中指定的选项
  • 进行API调用的ID
  • 对其进行API调用的对象
这有助于确定您是否提供了所有正确的权限。例如,Java和JMS类将查询它们接触的每个对象。这就是他们在连接时发现DLQ名称或在打开队列时发现BOQNAME的方式。因此,如果您没有在QMgr和队列上提供
+inq
,您将得到一个2035,事件消息将向您显示所使用的对象和选项。类似地,如果您读取了一条有毒消息,而该ID没有回退队列或死队列的权限,那么您将得到一个2035,它显示在您一直在愉快地使用消息的队列上(直到您看到事件消息为止)。因此,请确保启用身份验证事件并使用MS0P


如果您想要一个关于WMQ安全性的友好教程,有几个会议演示文稿已存档。

如果您在频道中设置了
MCAUSER
,那么这将覆盖客户端提供的任何ID。如果你仍然得到2035,那么有两种可能性。第一个问题是,
MCAUSER
中的ID没有使用
setmqaut
命令正确授权。第二个(至少对于Windows而言)是它不是正确的ID。例如,如果频道定义使用
MCAUSER(userx)
而不是
MCAUSER('x')userx@domain”)
则完全有可能显示的ID与WMQ解析的SID不同。当在笔记本电脑和WMQ服务器上定义了
userx
时,可能会发生这种情况。服务器必须能够解析提供给它附带的SID的ID

关于CHLAUTH规则,WMQ v7.1还有其他注意事项。如果显示的ID具有管理权限,默认情况下WMQ将在所有通道上阻止它。这是因为管理ID可以完全访问WMQ,并且可以使用WMQ服务或触发功能在QMgr的主机服务器上远程执行代码。因此,如果您有WMQ v7.1,您需要在所需通道上启用WMQ admin访问,或者使用非管理用户ID进行连接

最后,调试所有这些的最简单方法是在QMgr上启用授权事件并安装到WMQ Explorer中。这将在每次出现2035事件时生成一条事件消息,然后MS0P插件将其解析为人类可读的格式。消息会告诉你

  • 什么API调用失败了。(
    连接
    打开
    关闭
  • API调用中指定的选项
  • 进行API调用的ID
  • 对其进行API调用的对象
这有助于确定您是否提供了所有正确的权限。例如,Java和JMS类将查询它们接触的每个对象。这就是他们在连接时发现DLQ名称或在打开队列时发现BOQNAME的方式。因此,如果您没有在QMgr和队列上提供
+inq
,您将得到一个2035,事件消息将向您显示所使用的对象和选项。类似地,如果您读取了一条有毒消息,而该ID没有回退队列或死队列的权限,那么您将得到一个2035,它显示在您一直在愉快地使用消息的队列上(直到您看到事件消息为止)。因此,请确保启用身份验证事件并使用MS0P


如果您想要一个关于WMQ安全性的友好教程,这里有几个会议演示文稿存档。

什么版本的WMQ服务器和客户端?什么版本的WMQ服务器和客户端?我正在尝试使用构造函数(java)PCFMessageAgent(字符串主机,