这是部署配置管理器代理(CMP)应用程序中大型任务中的一部分。
下列示例将正在队列管理器 QMB2 上运行的名为 B2 的代理添加至域,并将其与名为 default 的执行组相关联。最后,该配置被部署至代理。
import com.ibm.broker.config.proxy.*; public class AddBroker { public static void main(String[] args) { ConfigManagerProxy cmp = null; try { ConfigManagerConnectionParameters cmcp = new MQConfigManagerConnectionParameters( "localhost", 1414, ""); cmp = ConfigManagerProxy.getInstance(cmcp); } catch (ConfigManagerProxyException cmpex) { System.out.println("Error connecting: "+cmpex); } if (cmp != null) { System.out.println("Connected to Config Manager!"); addBroker(cmp, "B2", "QMB2", "default"); cmp.disconnect(); } } private static void addBroker(ConfigManagerProxy cmp, String bName, String bQMgr, String egName) { TopologyProxy topology = null; try { topology = cmp.getTopology(); } catch(ConfigManagerProxyPropertyNotInitializedException ex) { System.err.println("Comms problem! "+ex); } if (topology != null) { try { BrokerProxy b2 = topology.createBroker(bName, bQMgr); ExecutionGroupProxy e = b2.createExecutionGroup(egName); b2.deploy(); } catch (ConfigManagerProxyException ex) { System.err.println("Could not perform an action: "+ex); } } } }
本示例中的关键语句是位于 addBroker() 方法结尾处的 try 块中的三行。 第一个语句试图将代理添加至配置管理器的拓扑,第二个语句试图创建缺省执行组,而第三个语句试图将配置(即,新执行组)部署至代理。
请注意,createBroker() 方法假设已使用 mqsicreatebroker 命令创建“物理”代理组件。
由于配置管理器是异步处理请求,因此,从 createBroker() 方法返回的 BrokerProxy 对象当返回到应用程序时,是“框架”对象,它是指可能尚未存在于配置管理器上的对象。
当从 createExecutionGroup() 方法返回 ExecutionGroupProxy 对象 e 时,也会发生同样的情况。这两种情况下,尽管可能一段时间内不会实际创建底层对象,但对象如同存在于配置管理器上一样,可以由应用程序操作。
一旦在配置管理器中创建了由框架表示的对象,则涉及该对象的任何请求都可以进行处理。在本示例中,一旦代理实际添加至配置管理器中的拓扑,则配置管理器就可以执行创建执行组的请求。
如果由于任何原因,创建框架所描述对象的请求失败,则任何使用该框架的请求也会失败。所以,如果无法创建代理 B2,则涉及框架 BrokerProxy 对象 b2 的任何请求(即,b2.createExecutionGroup() 和 b2.deploy()也会失败。然而,由于没有异常抛出,所以 CMP 应用程序如成功案例中一样运行。有关如何检测诸如此类问题的更多信息,请参阅使用配置管理器代理检查代理域管理的结果。