开始之前
在开始本主题之前,您必须已完成使用配置管理器连接至配置管理器。
import com.ibm.broker.config.proxy.*; public class SetLongDescription { 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!"); describeBroker(cmp, "B1", "this is my broker"); cmp.disconnect(); } } private static void describeBroker(ConfigManagerProxy cmp, String brokerName, String newDesc) { BrokerProxy b = null; try { TopologyProxy topology = cmp.getTopology(); if (topology != null) { b = topology.getBrokerByName(brokerName); } } catch(ConfigManagerProxyPropertyNotInitializedException ex) { System.err.println("Comms problem! "+ex); } if (b != null) { try { b.setLongDescription(newDesc); } catch (ConfigManagerProxyException ex) { System.err.println("Could not send request to CM: "+ex); } } else { System.err.println("Broker "+brokerName+" not found"); } } }
Properties p = new Properties(); p.setProperty(AttributeConstants.LONG_DESCRIPTION_PROPERTY, newDesc); b.setProperties(p);
请注意,如果当前用户没有必需的权限,则当使用 SetLongDescription.java 时,不可能确定是否 配置管理器 拒绝了请求。 如果,且仅当执行操作的消息无法发送至配置管理器时,设置详细描述字段的 CMP 方法才抛出 ConfigManagerProxyException。这表示从程序的输出完全一样,即便配置管理器无法更改必需属性也是如此。
这样做的原因是配置管理器异步处理来自 CMP 的请求,因此在配置管理器上执行该操作之前,理论上可能有很多时间。 如果方法(如本主题中描述的一个方法)未在完成代码可用之前返回对程序的控制,则 CMP 应用程序的执行将完全取决于配置管理器执行。
下一步:
多数更改状态的 CMP 方法设计为不通知调用应用程序请求的结果而直接返回。要找到这些信息,请参阅使用配置管理器代理检查代理域管理的结果