通过直接查找来使用连接工厂

在定义了 "IBM® MQ消息提供程序连接工厂后,企业应用程序就可以查找连接工厂定义,并使用它来创建与 "IBM MQ队列管理器的 "JMS连接。 可以通过直接查找来执行此操作。

要使用直接查找,企业应用程序将通过发出以下方法调用来连接到应用程序服务器的 JNDI 存储库:
InitialContext ctx = new InitialContext(); 
连接到 JNDI 存储库后,企业应用程序将使用连接工厂的 JNDI 名称来标识连接工厂定义,如下所示:
ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/myCF"); 
注:
  • 开发企业应用程序时,应用程序开发者需要知道所需连接工厂的 JNDI 名称。 由于 JNDI 名称是在应用程序内部硬编码的,因此如果 JNDI 名称发生更改,您需要重新编写并重新部署应用程序。
  • 以这种方式使用连接工厂定义时,认证别名中指定的用户名和密码 (连接工厂已配置为使用) 不会向下流至 IBM MQ。 这是为了防止未经授权的应用程序识别连接工厂,并能够使用它来连接到安全的 IBM MQ 系统。

流向 IBM MQ 的用户名和密码取决于用于从连接工厂创建 JMS 连接的方法。

如果应用程序使用以下方法创建 JMS 连接:
ConnectionFactory.createConnection() 
缺省用户身份将向下传递到 IBM MQ。 这是用于启动企业应用程序运行所在的应用程序服务器的用户名和密码。
或者,应用程序可以通过调用以下方法来创建 JMS 连接:
ConnectionFactory.createConnection(String username, String password) 

如果应用程序已执行连接工厂的直接查找,然后调用此方法,那么传递到 createConnection() 方法中的用户名和密码将向下流至 IBM MQ

重要信息:IBM MQ 8.0之前, IBM MQ 已处理授权检查,仅为了确保已向下流的用户名具有访问队列管理器的权限。

但未执行任何密码检查。 要执行认证检查并验证用户名和密码是否有效,必须编写 IBM MQ 通道安全出口。 有关如何操作的详细信息,请参阅渠道安全退出程序

IBM MQ 8.0开始,队列管理器除了检查用户名外,还会检查密码。