/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2000-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
/*
* @(#)CmdRunner.java 1.165 07/12/07
*/
package com.sun.messaging.jmq.admin.apps.broker;
import java.io.*;
import java.util.Properties;
import java.util.Hashtable;
import java.util.HashMap;
import java.util.Vector;
import java.util.Enumeration;
import java.util.Date;
import java.text.DateFormat;
import javax.jms.DeliveryMode;
import com.sun.messaging.jmq.admin.util.Globals;
import com.sun.messaging.jmq.admin.util.JMSObjFactory;
import com.sun.messaging.jmq.admin.resources.AdminResources;
import com.sun.messaging.jmq.admin.bkrutil.BrokerAdmin;
import com.sun.messaging.jmq.admin.bkrutil.BrokerAdminException;
import com.sun.messaging.jmq.admin.bkrutil.BrokerAdminUtil;
import com.sun.messaging.jmq.admin.bkrutil.BrokerConstants;
import com.sun.messaging.jmq.io.MetricCounters;
import com.sun.messaging.jmq.io.DestMetricsCounters;
import com.sun.messaging.jmq.util.DestType;
import com.sun.messaging.jmq.util.DestState;
import com.sun.messaging.jmq.util.Password;
import com.sun.messaging.jmq.util.ServiceState;
import com.sun.messaging.jmq.util.ServiceType;
import com.sun.messaging.jmq.util.SizeString;
import com.sun.messaging.jmq.util.DestLimitBehavior;
import com.sun.messaging.jmq.util.ClusterDeliveryPolicy;
import com.sun.messaging.jmq.util.DebugPrinter;
import com.sun.messaging.jmq.util.admin.MessageType;
import com.sun.messaging.jmq.util.admin.DestinationInfo;
import com.sun.messaging.jmq.util.admin.DurableInfo;
import com.sun.messaging.jmq.util.admin.ServiceInfo;
import com.sun.messaging.jmq.jmsclient.GenericPortMapperClient;
import com.sun.messaging.jmq.admin.apps.console.event.AdminEventListener;
import com.sun.messaging.jmq.admin.apps.console.event.AdminEvent;
import com.sun.messaging.jmq.admin.apps.console.event.BrokerCmdStatusEvent;
import com.sun.messaging.jms.management.server.BrokerClusterInfo;
import com.sun.messaging.jms.management.server.BrokerState;
import com.sun.messaging.jmq.util.FileUtil;
/**
* This class contains the logic to execute the user commands
* specified in the BrokerCmdProperties object. It has one
* public entry point which is the runCommands() method. It
* is expected to display to the user if the command execution
* was successful or not.
* @see ObjMgr
*
*/
public class CmdRunner implements BrokerCmdOptions, BrokerConstants, AdminEventListener {
/*
* Int constants for metric types
* Convenience - to avoid doing String.equals().
*/
private static final int METRICS_TOTALS = 0;
private static final int METRICS_RATES = 1;
private static final int METRICS_CONNECTIONS = 2;
private static final int METRICS_CONSUMER = 3;
private static final int METRICS_DISK = 4;
private static final int METRICS_REMOVE = 5;
/*
* List types
*/
private static final int LIST_ALL = 0;
private static final int LIST_TOPIC = 1;
private static final int LIST_QUEUE = 2;
private int zeroNegOneInt[] = {0, -1};
private long zeroNegOneLong[] = {0, -1};
private String zeroNegOneString[] = {"0", "-1"};
private String negOneString[] = {"-1"};
private AdminResources ar = Globals.getAdminResources();
private BrokerCmdProperties brokerCmdProps;
private BrokerAdmin admin;
/**
* Constructor
*/
public CmdRunner(BrokerCmdProperties props) {
this.brokerCmdProps = props;
}
/*
* Run/execute the user commands specified in the BrokerCmdProperties object.
*/
public int runCommands() {
int exitcode = 0;
/*
* If -debug was used, run the debug mode handler
* and exit.
*/
if (brokerCmdProps.debugModeSet()) {
exitcode = runDebug(brokerCmdProps);
return (exitcode);
}
/*
* Determine type of command and invoke the relevant run method
* to execute the command.
*
*/
String cmd = brokerCmdProps.getCommand();
if (cmd.equals(PROP_VALUE_CMD_LIST)) {
exitcode = runList(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_PAUSE)) {
exitcode = runPause(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_RESUME)) {
exitcode = runResume(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_SHUTDOWN)) {
exitcode = runShutdown(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_RESTART)) {
exitcode = runRestart(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_CREATE)) {
exitcode = runCreate(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_DESTROY)) {
exitcode = runDestroy(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_PURGE)) {
exitcode = runPurge(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_UPDATE)) {
exitcode = runUpdate(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_QUERY)) {
exitcode = runQuery(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_METRICS)) {
exitcode = runMetrics(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_RELOAD)) {
exitcode = runReload(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_CHANGEMASTER)) {
exitcode = runChangeMaster(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_COMMIT)) {
exitcode = runCommit(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_ROLLBACK)) {
exitcode = runRollback(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_COMPACT)) {
exitcode = runCompact(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_QUIESCE)) {
exitcode = runQuiesce(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_TAKEOVER)) {
exitcode = runTakeover(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_UNQUIESCE)) {
exitcode = runUnquiesce(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_RESET)) {
exitcode = runReset(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_CHECKPOINT)) {
exitcode = runCheckpoint(brokerCmdProps);
/*
* Private subcommands - to support testing only
*/
} else if (cmd.equals(PROP_VALUE_CMD_EXISTS)) {
exitcode = runExists(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_GETATTR)) {
exitcode = runGetAttr(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_UNGRACEFUL_KILL)) {
exitcode = runUngracefulKill(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_PURGEALL)) {
exitcode = runPurgeAll(brokerCmdProps);
} else if (cmd.equals(PROP_VALUE_CMD_DESTROYALL)) {
exitcode = runDestroyAll(brokerCmdProps);
}
return (exitcode);
}
/*
* BEGIN INTERFACE AdminEventListener
*/
public void adminEventDispatched(AdminEvent e) {
if (e instanceof BrokerCmdStatusEvent) {
BrokerCmdStatusEvent be = (BrokerCmdStatusEvent)e;
int type = be.getType();
if (type == BrokerCmdStatusEvent.BROKER_BUSY) {
CommonCmdRunnerUtil.printBrokerBusyEvent(be);
}
}
}
/*
* END INTERFACE AdminEventListener
*/
private int runList(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
broker = init();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg(),
destTypeStr = brokerCmdProps.getDestType();
int destTypeMask = getDestTypeMask(brokerCmdProps);
boolean listAll = (destTypeStr == null);
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DST_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
if (listAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_DST));
} else if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_QUEUE_DST));
} else if (DestType.isTopic(destTypeMask)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_TOPIC_DST));
}
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetDestinationsMessage(null, -1);
Vector dests = broker.receiveGetDestinationsReplyMessage();
if (dests != null) {
if (listAll) {
listDests(brokerCmdProps, dests, LIST_ALL);
} else if (DestType.isTopic(destTypeMask)) {
listDests(brokerCmdProps, dests, LIST_TOPIC);
} else if (DestType.isQueue(destTypeMask)) {
listDests(brokerCmdProps, dests, LIST_QUEUE);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_DST_SUC));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DST_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DST_FAIL));
return (1);
}
} else if (CMDARG_SERVICE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_SVC_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_SVC));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetServicesMessage(null);
Vector svcs = broker.receiveGetServicesReplyMessage();
if (svcs != null) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(3, 4, "-");
String[] row = new String[3];
row[0] = ar.getString(ar.I_JMQCMD_SVC_NAME);
row[1] = ar.getString(ar.I_JMQCMD_SVC_PORT);
row[2] = ar.getString(ar.I_JMQCMD_SVC_STATE);
bcp.addTitle(row);
Enumeration thisEnum = svcs.elements();
while (thisEnum.hasMoreElements()) {
ServiceInfo sInfo = (ServiceInfo)thisEnum.nextElement();
row[0] = sInfo.name;
// The port number is not applicable to this service
if (sInfo.port == -1) {
row[1] = "-";
// Add more information about the port number:
// dynamically generated or statically declared
} else if (sInfo.dynamicPort) {
switch (sInfo.state) {
case ServiceState.UNKNOWN:
row[1] = ar.getString(ar.I_DYNAMIC);
break;
default:
row[1] = new Integer(sInfo.port).toString() +
" (" + ar.getString(ar.I_DYNAMIC) + ")";
}
} else {
row[1] = new Integer(sInfo.port).toString() +
" (" + ar.getString(ar.I_STATIC) + ")";;
}
// row[2] = ServiceState.getString(sInfo.state);
row[2] = BrokerAdminUtil.getServiceState(sInfo.state);
bcp.add(row);
}
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_SVC_SUC));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_SVC_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_SVC_FAIL));
return (1);
}
} else if (CMDARG_DURABLE.equals(commandArg)) {
boolean listDstName = false; // display dst if we list all
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getDestName();
if (destName != null)
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR, destName));
else
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_ALL_DUR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR_FAIL));
return (1);
}
try {
if (destName == null) {
listDstName = true;
} else {
isDestTypeTopic(broker, destName);
}
} catch (BrokerAdminException bae) {
if (BrokerAdminException.INVALID_OPERATION == bae.getType())
bae.setBrokerErrorStr
(ar.getString(ar.I_ERROR_MESG) +
ar.getKString(ar.E_DEST_NOT_TOPIC, destName));
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR_FAIL));
return (1);
}
try {
broker.sendGetDurablesMessage(destName, null);
Vector durs = broker.receiveGetDurablesReplyMessage();
if (durs != null) {
BrokerCmdPrinter bcp = null;
String[] row = null;
if (listDstName) {
row = new String[5];
bcp= new BrokerCmdPrinter(5, 3, "-");
} else {
row = new String[4];
bcp= new BrokerCmdPrinter(4, 3, "-");
}
int indx = 0;
row[indx ++] = ar.getString(ar.I_JMQCMD_DUR_NAME);
row[indx ++] = ar.getString(ar.I_JMQCMD_CLIENT_ID);
if (listDstName)
row[indx ++] = ar.getString(ar.I_JMQCMD_DST_NAME);
row[indx ++] = ar.getString(ar.I_JMQCMD_DUR_NUM_MSG);
row[indx ++] = ar.getString(ar.I_JMQCMD_DUR_STATE);
bcp.addTitle(row);
Enumeration thisEnum = durs.elements();
while (thisEnum.hasMoreElements()) {
DurableInfo dInfo = (DurableInfo)thisEnum.nextElement();
indx = 0;
row[indx ++] = (dInfo.name == null) ? "" : dInfo.name;
row[indx++] = (dInfo.clientID == null) ? "" : dInfo.clientID;
if (listDstName)
row[indx ++] = (dInfo.consumer == null) ? "" : dInfo.consumer.destination;
row[indx ++] = new Integer(dInfo.nMessages).toString();
if (dInfo.isActive) {
if (dInfo.isShared && listDstName) {
row[indx ++] = ar.getString(ar.I_ACTIVE)+"["+dInfo.activeCount+"]";
} else {
row[indx ++] = ar.getString(ar.I_ACTIVE);
}
} else {
row[indx ++] = ar.getString(ar.I_INACTIVE);
}
bcp.add(row);
}
// Use durname+clientID as the key when listing.
bcp.setKeyCriteria(new int[] {0, 1});
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR_SUC));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_DUR_FAIL));
return (1);
}
} else if (CMDARG_TRANSACTION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_TXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_TXN));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetTxnsMessage();
Vector txns = broker.receiveGetTxnsReplyMessage();
if ((txns != null) && (txns.size() > 0)) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(5, 3, "-");
BrokerCmdPrinter bcp_local = new BrokerCmdPrinter(4, 3, "-");
BrokerCmdPrinter bcp_remote = new BrokerCmdPrinter(4, 3, "-");
String[] row = new String[5], value;
Long tmpLong;
Integer tmpInt;
String tmpStr, tmpStr2;
row[0] = ar.getString(ar.I_JMQCMD_TXN_ID);
row[1] = ar.getString(ar.I_JMQCMD_TXN_STATE);
row[2] = ar.getString(ar.I_JMQCMD_TXN_USERNAME);
row[3] = ar.getString(ar.I_JMQCMD_TXN_NUM_MSGS_ACKS);
row[4] = ar.getString(ar.I_JMQCMD_TXN_TIMESTAMP);
bcp.addTitle(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_ID);
row[1] = ar.getString(ar.I_JMQCMD_TXN_STATE);
row[2] = ar.getString(ar.I_JMQCMD_TXN_USERNAME);
row[3] = ar.getString(ar.I_JMQCMD_TXN_TIMESTAMP);
bcp_local.addTitle(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_ID);
row[1] = ar.getString(ar.I_JMQCMD_TXN_STATE);
row[2] = "# Acks";
row[3] = "Remote broker";
bcp_remote.addTitle(row);
Enumeration thisEnum = txns.elements();
while (thisEnum.hasMoreElements()) {
Hashtable txnInfo = (Hashtable)thisEnum.nextElement();
Integer type = (Integer)txnInfo.get("type");
if (type.intValue() == TXN_LOCAL) {
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_ID);
row[0] = checkNullAndPrint(tmpLong);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_STATE);
row[1] = getTxnStateString(tmpInt);
tmpStr = (String)txnInfo.get(PROP_NAME_TXN_USER);
row[2] = checkNullAndPrint(tmpStr);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_NUM_MSGS);
tmpStr = checkNullAndPrint(tmpInt);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_NUM_ACKS);
tmpStr2 = checkNullAndPrint(tmpInt);
row[3] = tmpStr + "/" + tmpStr2;
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_TIMESTAMP);
row[4] = checkNullAndPrintTimestamp(tmpLong);
bcp.add(row);
} else if (type.intValue() == TXN_CLUSTER) {
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_ID);
row[0] = checkNullAndPrint(tmpLong);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_STATE);
row[1] = getTxnStateString(tmpInt);
tmpStr = (String)txnInfo.get(PROP_NAME_TXN_USER);
row[2] = checkNullAndPrint(tmpStr);
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_TIMESTAMP);
row[3] = checkNullAndPrintTimestamp(tmpLong);
bcp_local.add(row);
} else if (type.intValue() == TXN_REMOTE) {
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_ID);
row[0] = checkNullAndPrint(tmpLong);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_STATE);
row[1] = getTxnStateString(tmpInt);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_NUM_ACKS);
tmpStr2 = checkNullAndPrint(tmpInt);
row[2] = tmpStr2;
tmpStr = (String)txnInfo.get("homebroker");
row[3] = checkNullAndPrint(tmpStr);
bcp_remote.add(row);
}
}
Globals.stdOutPrintln(
"Transactions that are owned by this broker");
bcp.println();
Globals.stdOutPrintln(
" Transactions that involve remote brokers");
bcp_local.setIndent(3);
bcp_local.println();
Globals.stdOutPrintln("Transactions that are owned by a remote broker");
bcp_remote.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_TXN_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_TXN_NONE));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_TXN_FAIL));
return (1);
}
} else if (CMDARG_CONNECTION.equals(commandArg)) {
String svcName = brokerCmdProps.getService();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_CXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
if (svcName == null) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_CXN));
printBrokerInfo(broker);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_CXN_FOR_SVC));
printServiceInfo(svcName);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
}
try {
connectToBroker(broker);
broker.sendGetConnectionsMessage(svcName, null);
Vector cxnList = broker.receiveGetConnectionsReplyMessage();
if ((cxnList != null) && (cxnList.size() > 0)) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(6, 2, "-");
String[] row = new String[6], value;
Long tmpLong;
Integer tmpInt;
String tmpStr;
int i;
i = 0;
row[i++] = ar.getString(ar.I_JMQCMD_CXN_CXN_ID);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_USER);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_SERVICE);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_NUM_PRODUCER);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_NUM_CONSUMER);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_HOST);
/*
row[i++] = ar.getString(ar.I_JMQCMD_CXN_CLIENT_ID);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_PORT);
row[i++] = ar.getString(ar.I_JMQCMD_CXN_CLIENT_PLATFORM);
*/
bcp.addTitle(row);
Enumeration thisEnum = cxnList.elements();
while (thisEnum.hasMoreElements()) {
Hashtable cxnInfo = (Hashtable)thisEnum.nextElement();
i = 0;
tmpLong = (Long)cxnInfo.get(PROP_NAME_CXN_CXN_ID);
row[i++] = checkNullAndPrint(tmpLong);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_USER);
row[i++] = checkNullAndPrint(tmpStr);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_SERVICE);
row[i++] = checkNullAndPrint(tmpStr);
tmpInt = (Integer)cxnInfo.get(PROP_NAME_CXN_NUM_PRODUCER);
row[i++] = checkNullAndPrint(tmpInt);
tmpInt = (Integer)cxnInfo.get(PROP_NAME_CXN_NUM_CONSUMER);
row[i++] = checkNullAndPrint(tmpInt);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_HOST);
row[i++] = checkNullAndPrint(tmpStr);
/*
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_CLIENT_ID);
row[i++] = checkNullAndPrint(tmpStr);
tmpInt = (Integer)cxnInfo.get(PROP_NAME_CXN_PORT);
row[i++] = checkNullAndPrint(tmpInt);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_CLIENT_PLATFORM);
row[i++] = checkNullAndPrint(tmpStr);
*/
bcp.add(row);
}
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_CXN_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_CXN_NONE));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_CXN_FAIL));
return (1);
}
} else if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_BKR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
/*
* Get broker props to find out if broker is in HA cluster and
* broker cluster ID
*/
broker.sendGetBrokerPropsMessage();
Properties bkrProps = broker.receiveGetBrokerPropsReplyMessage();
BrokerCmdPrinter haBcp = new BrokerCmdPrinter(2, 3, null);
String[] haInfoRow = new String[2];
/*
* Check if cluster is HA or not
*/
String value = bkrProps.getProperty(PROP_NAME_BKR_CLS_HA);
boolean isHA = Boolean.valueOf(value).booleanValue();
/*
* Display cluster ID only if HA cluster
*/
//if (isHA) {
haInfoRow[0] = ar.getString(ar.I_CLS_CLUSTER_ID);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_CLUSTER_ID, "");
haInfoRow[1] = value;
haBcp.add(haInfoRow);
//}
haInfoRow[0] = ar.getString(ar.I_CLS_IS_HA);
if (!isHA) {
haInfoRow[1] = Boolean.FALSE.toString();
} else {
haInfoRow[1] = Boolean.TRUE.toString();
}
haBcp.add(haInfoRow);
haBcp.println();
/*
* Get state of each broker in cluster
*/
broker.sendGetClusterMessage(true);
Vector bkrList = broker.receiveGetClusterReplyMessage();
if ((bkrList != null) && (bkrList.size() > 0)) {
BrokerCmdPrinter bcp;
String[] row;
Long tmpLong;
Integer tmpInt;
long idle;
int i;
if (isHA) {
bcp = new BrokerCmdPrinter(6, 3, "-");
row = new String[6];
bcp.setSortNeeded(false);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
i = 0;
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_CLS_TAKEOVER_ID1);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_TIME_SINCE_TIMESTAMP1);
bcp.addTitle(row);
i = 0;
row[i++] = ar.getString(ar.I_JMQCMD_CLS_BROKER_ID);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_ADDRESS);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_BROKER_STATE);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_NUM_MSGS);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_TAKEOVER_ID2);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_TIME_SINCE_TIMESTAMP2);
bcp.addTitle(row);
Enumeration thisEnum = bkrList.elements();
while (thisEnum.hasMoreElements()) {
Hashtable bkrClsInfo
= (Hashtable)thisEnum.nextElement();
i = 0;
row[i++] =
checkNullAndPrint(
bkrClsInfo.get(BrokerClusterInfo.ID));
row[i++] =
checkNullAndPrint(
bkrClsInfo.get(BrokerClusterInfo.ADDRESS));
tmpInt = (Integer)bkrClsInfo.get(BrokerClusterInfo.STATE);
if (tmpInt != null) {
row[i++] = BrokerState.toString(tmpInt.intValue());
} else {
row[i++] = "";
}
tmpLong = (Long)bkrClsInfo.get(BrokerClusterInfo.NUM_MSGS);
row[i++] = checkNullAndPrint(tmpLong);
row[i++] = checkNullAndPrint(
bkrClsInfo.get(
BrokerClusterInfo.TAKEOVER_BROKER_ID));
tmpLong = (Long)bkrClsInfo.get(
BrokerClusterInfo.STATUS_TIMESTAMP);
if (tmpLong != null) {
idle = System.currentTimeMillis() - tmpLong.longValue();
row[i++] = CommonCmdRunnerUtil.getTimeString(idle);
} else {
row[i++] = "";
}
bcp.add(row);
}
} else {
bcp = new BrokerCmdPrinter(2, 3, "-");
row = new String[2];
bcp.setSortNeeded(false);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
i = 0;
row[i++] = ar.getString(ar.I_JMQCMD_CLS_ADDRESS);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_BROKER_STATE);
bcp.addTitle(row);
Enumeration thisEnum = bkrList.elements();
while (thisEnum.hasMoreElements()) {
Hashtable bkrClsInfo
= (Hashtable)thisEnum.nextElement();
i = 0;
row[i++] =
checkNullAndPrint(
bkrClsInfo.get(BrokerClusterInfo.ADDRESS));
tmpInt = (Integer)bkrClsInfo.get(BrokerClusterInfo.STATE);
if (tmpInt != null) {
row[i++] = BrokerState.toString(tmpInt.intValue());
} else {
row[i++] = "";
}
bcp.add(row);
}
}
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_BKR_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_BKR_NONE));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_BKR_FAIL));
return (1);
}
} else if (CMDARG_JMX_CONNECTOR.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_JMX_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_JMX));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetJMXConnectorsMessage(null);
Vector jmxList = broker.receiveGetJMXConnectorsReplyMessage();
if (jmxList != null) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(3, 4, null);
String[] row = new String[3];
row[0] = ar.getString(ar.I_JMQCMD_JMX_NAME);
row[1] = ar.getString(ar.I_JMQCMD_JMX_ACTIVE);
row[2] = ar.getString(ar.I_JMQCMD_JMX_URL);
bcp.addTitle(row);
Enumeration thisEnum = jmxList.elements();
while (thisEnum.hasMoreElements()) {
Hashtable jmxInfo = (Hashtable)thisEnum.nextElement();
int i = 0;
row[i++] = checkNullAndPrint(jmxInfo.get(PROP_NAME_JMX_NAME));
row[i++] = checkNullAndPrint(jmxInfo.get(PROP_NAME_JMX_ACTIVE));
row[i++] = checkNullAndPrint(jmxInfo.get(PROP_NAME_JMX_URL));
bcp.add(row);
}
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_JMX_SUC));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_JMX_NONE));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_JMX_SUC));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_JMX_FAIL));
return (1);
}
} else if (CMDARG_MSG.equals(commandArg)) {
if (broker == null) {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_FAIL));
*/
Globals.stdErrPrintln("Listing messages failed.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
Long maxNumMsgsRetrieved = brokerCmdProps.getMaxNumMsgsRetrieved(),
startMsgIndex = brokerCmdProps.getStartMsgIndex();
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG));
*/
Globals.stdOutPrintln("Listing messages for the destination");
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetMessagesMessage(destName, destTypeMask, false, null,
startMsgIndex, maxNumMsgsRetrieved);
Vector msgList = broker.receiveGetMessagesReplyMessage();
if ((msgList != null) && (msgList.size() != 0)) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(4, 3, "-");
String[] row = new String[4];
bcp.setSortNeeded(false);
int i = 0;
row[i++] = "Message #";
row[i++] = "Message IDs";
row[i++] = "Priority";
row[i++] = "Body Type";
bcp.addTitle(row);
long start = 0;
if (startMsgIndex != null) {
start = startMsgIndex.longValue();
}
Enumeration thisEnum = msgList.elements();
while (thisEnum.hasMoreElements()) {
HashMap oneMsg = (HashMap)thisEnum.nextElement();
i = 0;
/*
String oneID = (String)thisEnum.nextElement();
*/
row[i++] = Long.toString(start++);
row[i++] = checkNullAndPrint(oneMsg.get("MessageID"));
row[i++] = checkNullAndPrint(oneMsg.get("Priority"));
row[i++] = checkNullAndPrintMsgBodyType(
(Integer)oneMsg.get("MessageBodyType"), false);
bcp.add(row);
}
bcp.println();
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully listed messages.");
} else {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_NONE));
*/
Globals.stdErrPrintln("There are no messages.");
Globals.stdOutPrintln("");
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully listed messages.");
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_FAIL));
*/
Globals.stdErrPrintln("Listing messages failed.");
return (1);
}
}
broker.close();
return (0);
}
private void listDests(BrokerCmdProperties brokerCmdProps, Vector dests,
int listType) {
BrokerCmdPrinter bcp = setupListDestTitle(listType);
String[] row = new String[11];
int i = 0;
Enumeration thisEnum = dests.elements();
while (thisEnum.hasMoreElements()) {
DestinationInfo dInfo = (DestinationInfo)thisEnum.nextElement();
int j = 0, numMsgs;
long totalMsgSize;
float avgMsgSize = 0;
String destType;
if (MessageType.JMQ_ADMIN_DEST.equals(dInfo.name) ||
MessageType.JMQ_BRIDGE_ADMIN_DEST.equals(dInfo.name))
continue;
if (DestType.isInternal(dInfo.fulltype))
continue;
// List temporary destinations only if the "-tmp" flag is
// specified. This will also display the admin temporary
// destination(s), since there is currently no way to
// differentiate it.
if (DestType.isTemporary(dInfo.type)) {
if (brokerCmdProps.showTempDestModeSet()) {
destType = BrokerAdminUtil.getDestinationType(dInfo.type)
+ " ("
+ ar.getString(ar.I_TEMPORARY)
+ ")";
} else {
continue;
}
} else {
destType = BrokerAdminUtil.getDestinationType(dInfo.type);
}
if ((listType == LIST_TOPIC) && !DestType.isTopic(dInfo.type)) {
continue;
}
if ((listType == LIST_QUEUE) && !DestType.isQueue(dInfo.type)) {
continue;
}
/*
* get total msgs, calculate average size
*/
numMsgs = dInfo.nMessages - dInfo.nTxnMessages;
totalMsgSize = dInfo.nMessageBytes;
if (numMsgs > 0)
avgMsgSize = (float)totalMsgSize/(float)numMsgs;
row[j++] = dInfo.name;
row[j++] = destType;
//row[j++] = DestState.toString(dInfo.destState);
row[j++] = BrokerAdminUtil.getDestinationState(dInfo.destState);
row[j++] = new Integer(dInfo.nProducers).toString();
if (DestType.isTopic(dInfo.type)) {
/*
* For topics, show number of producer wildcards, if any.
*/
Hashtable h = dInfo.producerWildcards;
row[j++] = Integer.toString(getWildcardCount(h));
} else {
/*
* Wildcards not applicable for queues.
*/
row[j++] = "-";
}
/*
* Use cases:
* list dst -t t
* -> show total consumers
* -> show total wildcard consumers
* list dst -t q
* -> show active/backup consumers
* list dst
* -> show total consumers
* -> show total wildcard consumers for topics
* -> show "-" for queues
*/
if (DestType.isTopic(dInfo.type)) {
row[j++] = new Integer(dInfo.nConsumers).toString();
/*
* For topics, show number of producer wildcards, if any.
*/
Hashtable h = dInfo.consumerWildcards;
row[j++] = Integer.toString(getWildcardCount(h));
} else {
if (listType == LIST_QUEUE) {
row[j++] = new Integer(dInfo.naConsumers).toString();
row[j++] = new Integer(dInfo.nfConsumers).toString();
} else {
row[j++] =
new Integer(dInfo.naConsumers + dInfo.nfConsumers).toString();
/*
* Wildcards not applicable for queues.
*/
row[j++] = "-";
}
}
row[j++] = new Integer(numMsgs).toString();
row[j++] = new Integer(dInfo.nRemoteMessages).toString();
row[j++] = new Integer(dInfo.nUnackMessages).toString();
row[j++] = new Float(avgMsgSize).toString();
bcp.add(row);
}
// Fix for bug 4495379: jmqcmd: when create queue and topic
// with same name only one is listed
// Use name+type as the key when listing.
bcp.setKeyCriteria(new int[] {0, 1});
bcp.println();
}
/*
* The Hashble contains wildcard consumers (or producers).
* Each entry is of the form:
* <wildcard, count>
*
* eg.
*
* <*.sun, 2>
* <news.*, 4>
*
* This method returns the total # of wildcard consumers or
* producers. In the example above, the total would be
* 2 + 4 = 6.
*/
private int getWildcardCount(Hashtable h) {
int count = 0;
if (h == null) {
return (0);
}
Enumeration keys = h.keys();
while (keys.hasMoreElements()) {
String wildcard = (String)keys.nextElement();
Integer val = (Integer)h.get(wildcard);
count += val.intValue();
}
return (count);
}
private String getTxnStateString(Integer txnState) {
if (txnState == null) {
return ("");
}
int tmpInt = txnState.intValue();
/*
* Instead of hardcoding the values 0 - 7 here we should get it
* from a interface or class shared by the broker and admin.
* The current values are currently in a broker private class:
* com.sun.messaging.jmq.jmsserver.data.TransactionState
*/
switch (tmpInt) {
case 0:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_CREATED));
case 1:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_STARTED));
case 2:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_FAILED));
case 3:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_INCOMPLETE));
case 4:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_COMPLETE));
case 5:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_PREPARED));
case 6:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_COMMITTED));
case 7:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_ROLLEDBACK));
default:
return(ar.getString(ar.I_JMQCMD_TXN_STATE_UNKNOWN));
}
}
private int runPause(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
boolean force = brokerCmdProps.forceModeSet();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_PAUSE_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendPauseMessage(null);
broker.receivePauseReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_BKR_NOOP));
return (1);
}
} else if (CMDARG_SERVICE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String svcName = brokerCmdProps.getTargetName();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC));
printServiceInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_FAIL));
return (1);
}
try {
isAdminService(broker, svcName);
} catch (BrokerAdminException bae) {
if (BrokerAdminException.INVALID_OPERATION == bae.getType())
bae.setBrokerErrorStr
(ar.getString(ar.I_ERROR_MESG) +
ar.getKString(ar.E_CANNOT_PAUSE_SVC, svcName));
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_PAUSE_SVC_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendPauseMessage(svcName);
broker.receivePauseReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_SVC_NOOP));
return (1);
}
} else if (CMDARG_DESTINATION.equals(commandArg)) {
String destName, pauseTypeStr;
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2,4);
String[] row = new String[2];
boolean pauseAll = true;
int destTypeMask;
destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
pauseTypeStr = brokerCmdProps.getPauseType();
if (destName != null) {
pauseAll = false;
}
if (broker == null) {
if (pauseAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST_FAIL));
}
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
if (pauseAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST));
printDestinationInfo();
}
// Only print out the pause type if it was specified
if (pauseTypeStr != null) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_USING_ATTR));
row[0] = ar.getString(ar.I_JMQCMD_PAUSE_DST_TYPE);
row[1] = pauseTypeStr;
bcp.add(row);
bcp.println();
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
if (pauseAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST_FAIL));
}
return (1);
}
if (!force) {
if (pauseAll) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_PAUSE_DSTS_OK), noShort);
} else {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_PAUSE_DST_OK), noShort);
}
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
int pauseType = getPauseTypeVal(pauseTypeStr);
broker.sendPauseMessage(destName, destTypeMask, pauseType);
broker.receivePauseReplyMessage();
if (pauseAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST_SUC));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
if (pauseAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST_FAIL));
}
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
if (pauseAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS_NOOP));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST_NOOP));
}
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
if (pauseAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DSTS_NOOP));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PAUSE_DST_NOOP));
}
return (1);
}
}
broker.close();
return (0);
}
private int runReset(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
boolean force = brokerCmdProps.forceModeSet();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_BROKER.equals(commandArg)) {
String resetType;
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2,4);
String[] row = new String[2];
resetType = brokerCmdProps.getResetType();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR));
// Only print out the pause type if it was specified
if (resetType != null) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_USING_ATTR));
row[0] = ar.getString(ar.I_JMQCMD_RESET_BKR_TYPE);
row[1] = resetType;
bcp.add(row);
bcp.println();
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_RESET_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
String resetTypeVal = getResetTypeVal(resetType);
broker.sendResetBrokerMessage(resetTypeVal);
broker.receiveResetBrokerReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESET_BKR_NOOP));
return (1);
}
}
broker.close();
return (0);
}
private int runCheckpoint(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort, sessionID;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_CHECKPOINT_BKR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
boolean noFailover = brokerCmdProps.noFailoverSet();
int time = brokerCmdProps.getTime();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHECKPOINT_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
sessionID = getPortMapperSessionID(brokerCmdProps, broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_CHECKPOINT_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar
.getString(ar.Q_CHECKPOINT_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input)
|| force) {
try {
broker.sendCheckpointBrokerMessage();
broker.receiveCheckpointBrokerReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHECKPOINT_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar
.getString(ar.I_JMQCMD_CHECKPOINT_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input)
|| no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHECKPOINT_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHECKPOINT_BKR_NOOP));
return (1);
}
broker.close();
return (0);
}
private int runResume(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
boolean force = brokerCmdProps.forceModeSet();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_RESUME_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendResumeMessage(null);
broker.receiveResumeReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_BKR_NOOP));
return (1);
}
} else if (CMDARG_SERVICE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String svcName = brokerCmdProps.getTargetName();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC));
printServiceInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_FAIL));
return (1);
}
try {
isAdminService(broker, svcName);
} catch (BrokerAdminException bae) {
if (BrokerAdminException.INVALID_OPERATION == bae.getType())
bae.setBrokerErrorStr
(ar.getString(ar.I_ERROR_MESG) +
ar.getKString(ar.E_CANNOT_RESUME_SVC, svcName));
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_RESUME_SVC_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendResumeMessage(svcName);
broker.receiveResumeReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_SVC_NOOP));
return (1);
}
} else if (CMDARG_DESTINATION.equals(commandArg)) {
String destName;
int destTypeMask;
boolean resumeAll = true;
destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
if (destName != null) {
resumeAll = false;
}
if (broker == null) {
if (resumeAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST_FAIL));
}
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
if (resumeAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
}
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
if (resumeAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST_FAIL));
}
return (1);
}
if (!force) {
if (resumeAll) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_RESUME_DSTS_OK), noShort);
} else {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_RESUME_DST_OK), noShort);
}
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendResumeMessage(destName, destTypeMask);
broker.receiveResumeReplyMessage();
if (resumeAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST_SUC));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
if (resumeAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST_FAIL));
}
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
if (resumeAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS_NOOP));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST_NOOP));
}
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
if (resumeAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DSTS_NOOP));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESUME_DST_NOOP));
}
return (1);
}
}
broker.close();
return (0);
}
private int runShutdown(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort, sessionID;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
boolean noFailover = brokerCmdProps.noFailoverSet();
int time = brokerCmdProps.getTime();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
sessionID = getPortMapperSessionID(brokerCmdProps, broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_SHUTDOWN_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendShutdownMessage(false, false, noFailover, time);
broker.receiveShutdownReplyMessage();
if (waitForShutdown(broker, sessionID, brokerCmdProps)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SENT_SHUTDOWN_BKR_SUC));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SHUTDOWN_BKR_NOOP));
return (1);
}
/*
* We don't need to call broker.close() since the broker
* connection should be gone.
* broker.close();
*/
return (0);
}
/*
* Wait for broker to shutdown.
* Returns true if a wait was performed.
* Returns false if no waiting was done - return immediately.
*/
private boolean waitForShutdown(BrokerAdmin broker, String waitSessionID,
BrokerCmdProperties brokerCmdProps) {
GenericPortMapperClient pmc = null;
String hostName = broker.getBrokerHost(),
portString = broker.getBrokerPort(),
sessionID = null;
int port, shutdownDelaySecs;
long sleepTime;
/*
* Don't wait if don't have broker props
*/
if (brokerCmdProps == null) {
return (false);
}
sleepTime = brokerCmdProps.getShutdownWaitInterval();
shutdownDelaySecs = brokerCmdProps.getTime();
/*
* Don't wait if delayed shutdown (ie 'imqcmd shutdown bkr' used with -time <non-zero time>)
*/
if (shutdownDelaySecs > 0) {
return (false);
}
/*
* Don't wait if cannot identify the specific broker to wait for.
*/
if (waitSessionID == null) {
return (false);
}
try {
port = Integer.parseInt(portString);
} catch(Exception e) {
port = 7676;
}
boolean brokerDown = false;
int count = 0;
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_WAITING_FOR_SHUTDOWN,
hostName + ":" + portString));
while (!brokerDown) {
try {
Thread.sleep(sleepTime);
} catch (Exception e) {
}
try {
pmc = new GenericPortMapperClient(hostName, port);
} catch(Exception e) {
brokerDown = true;
}
if (pmc != null) {
sessionID = pmc.getProperty("sessionid", null, "PORTMAPPER", "portmapper");
if (sessionID == null) {
brokerDown = true;
} else if (!sessionID.equals(waitSessionID)) {
brokerDown = true;
}
}
}
return (true);
}
private String getPortMapperSessionID(BrokerCmdProperties brokerCmdProps, BrokerAdmin broker) {
GenericPortMapperClient pmc;
String hostName = broker.getBrokerHost(),
portString = broker.getBrokerPort(),
sessionID = null;
int port;
try {
port = Integer.parseInt(portString);
} catch(Exception e) {
port = 7676;
}
try {
pmc = new GenericPortMapperClient(hostName, port);
sessionID = pmc.getProperty("sessionid", null, "PORTMAPPER", "portmapper");
} catch(Exception e) {
}
return (sessionID);
}
private int runRestart(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_RESTART_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendShutdownMessage(true);
broker.receiveShutdownReplyMessage();
/*
* Shutdown was successful. Now wait to see if jmqcmd can get
* reconnected back to the broker.
*/
if (reconnectToBroker(broker))
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_SUC));
else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RESTART_BKR_NOOP));
return (1);
}
broker.close();
return (0);
}
private int runCreate(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
DestinationInfo destInfo;
String destName;
int destTypeMask;
Properties destAttrs;
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_CREATE_DST_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
destAttrs = brokerCmdProps.getTargetAttrs();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CREATE_DST));
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2,4);
String[] row = new String[2];
bcp.setSortNeeded(false);
row[0] = ar.getString(ar.I_JMQCMD_DST_NAME);
row[1] = destName;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_TYPE);
row[1] = BrokerAdminUtil.getDestinationType(destTypeMask);
bcp.add(row);
/*
// Only print out the flavor type if the destination is a queue.
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_FLAVOR);
row[1] = BrokerAdminUtil.getDestinationFlavor(destTypeMask);
bcp.add(row);
}
*/
// Check for optional destination attributes.
// Note that the same checking is done twice; once for printing
// and once for creating the DestinationInfo object. It can
// be combined, but this is cleaner.
String prop = null;
if ((prop = destAttrs.getProperty
(PROP_NAME_OPTION_MAX_MESG)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_MSG_ALLOW);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_OPTION_MAX_MESG_BYTE)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_MSG_BYTES_ALLOW);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_OPTION_MAX_PER_MESG_SIZE)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_BYTES_PER_MSG_ALLOW);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_MAX_PRODUCERS)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_PRODUCERS);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_MAX_ACTIVE_CONSUMER_COUNT)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_ACTIVE_CONSUMER_COUNT);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_MAX_FAILOVER_CONSUMER_COUNT)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_FAILOVER_CONSUMER_COUNT);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_LIMIT_BEHAVIOUR)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_LIMIT_BEHAVIOUR);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_CONSUMER_FLOW_LIMIT)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_CONS_FLOW_LIMIT);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_IS_LOCAL_DEST)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_IS_LOCAL_DEST);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_LOCAL_DELIVERY_PREF)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_LOCAL_DELIVERY_PREF);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_USE_DMQ)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_USE_DMQ);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_VALIDATE_XML_SCHEMA_ENABLED)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_VALIDATE_XML_SCHEMA_ENABLED);
row[1] = prop;
bcp.add(row);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_XML_SCHEMA_URI_LIST)) != null) {
row[0] = ar.getString(ar.I_JMQCMD_DST_XML_SCHEMA_URI_LIST);
row[1] = prop;
bcp.add(row);
}
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
SizeString ss;
long byteValue;
destInfo = new DestinationInfo();
destInfo.setType(destTypeMask);
destInfo.setName(destName);
// Check for optional destination attributes
if ((prop = destAttrs.getProperty
(PROP_NAME_OPTION_MAX_MESG_BYTE)) != null) {
try {
ss = new SizeString(prop);
byteValue = ss.getBytes();
destInfo.setMaxMessageBytes(byteValue);
} catch (NumberFormatException nfe) {
/*
* Do nothing. We shouldn't ever get here since
* we do input validation prior to all this.
*/
}
}
if ((prop = destAttrs.getProperty
(PROP_NAME_OPTION_MAX_MESG)) != null) {
destInfo.setMaxMessages(Integer.parseInt(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_OPTION_MAX_PER_MESG_SIZE)) != null) {
try {
ss = new SizeString(prop);
byteValue = ss.getBytes();
destInfo.setMaxMessageSize(byteValue);
} catch (NumberFormatException nfe) {
/*
* Do nothing. We shouldn't ever get here since
* we do input validation prior to all this.
*/
}
}
if ((prop = destAttrs.getProperty
(PROP_NAME_MAX_FAILOVER_CONSUMER_COUNT)) != null) {
destInfo.setMaxFailoverConsumers(Integer.parseInt(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_MAX_ACTIVE_CONSUMER_COUNT)) != null) {
destInfo.setMaxActiveConsumers(Integer.parseInt(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_IS_LOCAL_DEST)) != null) {
destInfo.setScope(Boolean.valueOf(prop).booleanValue());
}
if ((prop = destAttrs.getProperty
(PROP_NAME_LIMIT_BEHAVIOUR)) != null) {
destInfo.setLimitBehavior(getLimitBehavValue(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_LOCAL_DELIVERY_PREF)) != null) {
destInfo.setClusterDeliveryPolicy(getClusterDeliveryPolicy(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_CONSUMER_FLOW_LIMIT)) != null) {
destInfo.setPrefetch(Integer.parseInt(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_MAX_PRODUCERS)) != null) {
destInfo.setMaxProducers(Integer.parseInt(prop));
}
if ((prop = destAttrs.getProperty
(PROP_NAME_USE_DMQ)) != null) {
destInfo.setUseDMQ(Boolean.valueOf(prop).booleanValue());
}
if ((prop = destAttrs.getProperty
(PROP_NAME_VALIDATE_XML_SCHEMA_ENABLED)) != null) {
destInfo.setValidateXMLSchemaEnabled(Boolean.valueOf(prop).booleanValue());
}
if ((prop = destAttrs.getProperty
(PROP_NAME_XML_SCHEMA_URI_LIST)) != null) {
destInfo.setXMLSchemaUriList(prop);
}
if ((prop = destAttrs.getProperty
(PROP_NAME_RELOAD_XML_SCHEMA_ON_FAILURE)) != null) {
destInfo.setReloadXMLSchemaOnFailure(Boolean.valueOf(prop).booleanValue());
}
connectToBroker(broker);
broker.sendCreateDestinationMessage(destInfo);
broker.receiveCreateDestinationReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CREATE_DST_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_CREATE_DST_FAIL));
return (1);
}
broker.close();
return (0);
}
private int runDestroy(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
String commandArg = brokerCmdProps.getCommandArg();
boolean force = brokerCmdProps.forceModeSet();
broker = init();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_DESTROY_DST_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendDestroyDestinationMessage(destName, destTypeMask);
broker.receiveDestroyDestinationReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DST_NOOP));
return (1);
}
} else if (CMDARG_DURABLE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String subName = brokerCmdProps.getTargetName();
String clientID = brokerCmdProps.getClientID();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR));
printDurableSubscriptionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_DESTROY_DUR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendDestroyDurableMessage(subName, clientID);
broker.receiveDestroyDurableReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_DUR_NOOP));
return (1);
}
} else if (CMDARG_CONNECTION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String cxnIdStr = brokerCmdProps.getTargetName();
Long cxnId = null;
try {
cxnId = Long.valueOf(cxnIdStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_CXN_ID, cxnIdStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_FAIL));
return (1);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN));
printConnectionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_DESTROY_CXN_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendDestroyConnectionMessage(cxnId);
broker.receiveDestroyConnectionReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_CXN_NOOP));
return (1);
}
} else if (CMDARG_MSG.equals(commandArg)) {
if (broker == null) {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG_FAIL));
*/
Globals.stdErrPrintln("Destroying message failed.");
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
String msgID = brokerCmdProps.getMsgID();
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG));
*/
Globals.stdOutPrintln("Destroying message:");
printMessageInfo();
Globals.stdOutPrintln("In the destination");
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG_FAIL));
*/
Globals.stdErrPrintln("Destroying message failed.");
return (1);
}
if (!force) {
/*
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_DESTROY_MSG_OK), noShort);
*/
input = CommonCmdRunnerUtil.getUserInput("Are you sure you want to destroy this message? (y/n)[n] ", noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendDestroyMessagesMessage(destName, destTypeMask, msgID);
broker.receiveDestroyMessagesReplyMessage();
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully destroyed message.");
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG_FAIL));
*/
Globals.stdErrPrintln("Destroying message failed.");
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG_NOOP));
*/
Globals.stdOutPrintln("The message was not destroyed.\n");
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_DESTROY_MSG_NOOP));
*/
Globals.stdOutPrintln("The message was not destroyed.\n");
return (1);
}
}
broker.close();
return (0);
}
private int runPurge(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String destName;
int destTypeMask;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
String commandArg = brokerCmdProps.getCommandArg();
boolean force = brokerCmdProps.forceModeSet();
broker = init();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_PURGE_DST_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendPurgeDestinationMessage(destName, destTypeMask);
broker.receivePurgeDestinationReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DST_NOOP));
return (1);
}
} else if (CMDARG_DURABLE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
String subName = brokerCmdProps.getTargetName();
String clientID = brokerCmdProps.getClientID();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR));
printDurableSubscriptionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_PURGE_DUR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendPurgeDurableMessage(subName, clientID);
broker.receivePurgeDurableReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_PURGE_DUR_NOOP));
return (1);
}
}
broker.close();
return (0);
}
private int runPurgeAll(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
int ret_code = 0;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
String commandArg = brokerCmdProps.getCommandArg();
boolean force = brokerCmdProps.forceModeSet();
broker = init();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln("Purging all the destinations failed");
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln("Purging all the destinations");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln("Purging all the destinations failed");
return (1);
}
if (!force) {
input =
CommonCmdRunnerUtil.getUserInput("Are you sure you want to purge all the destinations? (y/n)[n] ", noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
boolean dstsPurged = false;
/*
* List all destinations
*/
broker.sendGetDestinationsMessage(null, -1);
Vector dests = broker.receiveGetDestinationsReplyMessage();
if (dests != null) {
Enumeration thisEnum = dests.elements();
while (thisEnum.hasMoreElements()) {
DestinationInfo dInfo = (DestinationInfo)thisEnum.nextElement();
String destName;
int destTypeMask;
destName = dInfo.name;
destTypeMask = dInfo.type;
if (MessageType.JMQ_ADMIN_DEST.equals(destName)
|| MessageType.JMQ_BRIDGE_ADMIN_DEST.equals(destName)
|| DestType.isInternal(dInfo.fulltype)
|| DestType.isTemporary(dInfo.type)) {
Globals.stdOutPrintln("Skipping destination: " + destName);
continue;
}
try {
broker.sendPurgeDestinationMessage(destName, destTypeMask);
broker.receivePurgeDestinationReplyMessage();
if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln("Successfully purged queue " + destName);
} else {
Globals.stdOutPrintln("Successfully purged topic " + destName);
}
dstsPurged = true;
} catch (BrokerAdminException purgeEx) {
handleBrokerAdminException(purgeEx);
if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln("Purging failed for queue " + destName);
} else {
Globals.stdOutPrintln("Purging failed for topic " + destName);
}
ret_code = 1;
}
}
}
if (!dstsPurged) {
Globals.stdOutPrintln("No destinations purged.");
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln("Purging all the destinations failed");
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln("The destinations were not purged.");
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln("The destinations were not purged.");
return (1);
}
}
broker.close();
return (ret_code);
}
private int runDestroyAll(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
int ret_code = 0;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
String commandArg = brokerCmdProps.getCommandArg();
boolean force = brokerCmdProps.forceModeSet();
broker = init();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln("Destroying all the destinations failed");
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln("Destroying all the destinations");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln("Destroying all the destinations failed");
return (1);
}
if (!force) {
input =
CommonCmdRunnerUtil.getUserInput("Are you sure you want to destroy all the destinations? (y/n)[n] ", noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
boolean dstsDestroyed = false;
/*
* List all destinations
*/
broker.sendGetDestinationsMessage(null, -1);
Vector dests = broker.receiveGetDestinationsReplyMessage();
if (dests != null) {
Enumeration thisEnum = dests.elements();
while (thisEnum.hasMoreElements()) {
DestinationInfo dInfo = (DestinationInfo)thisEnum.nextElement();
String destName;
int destTypeMask;
destName = dInfo.name;
destTypeMask = dInfo.type;
if (MessageType.JMQ_ADMIN_DEST.equals(destName)
|| MessageType.JMQ_BRIDGE_ADMIN_DEST.equals(destName)
|| DestType.isInternal(dInfo.fulltype)
|| DestType.isTemporary(dInfo.type) ||
DestType.isDMQ(dInfo.type)) {
Globals.stdOutPrintln("Skipping destination: " + destName);
continue;
}
try {
broker.sendDestroyDestinationMessage(destName, destTypeMask);
broker.receiveDestroyDestinationReplyMessage();
if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln("Successfully destroyed queue "
+ destName);
} else {
Globals.stdOutPrintln("Successfully destroyed topic "
+ destName);
}
dstsDestroyed = true;
} catch (BrokerAdminException destroyEx) {
handleBrokerAdminException(destroyEx);
if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln("Destroy failed for queue " + destName);
} else {
Globals.stdOutPrintln("Destroy failed for topic " + destName);
}
ret_code = 1;
}
}
}
if (!dstsDestroyed) {
Globals.stdOutPrintln("No destinations destroyed.");
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln("Destroying all the destinations failed");
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln("The destinations were not destroyed.");
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln("The destinations were not destroyed.");
return (1);
}
}
broker.close();
return (ret_code);
}
private int runUpdate(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
Properties targetAttrs;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
String commandArg = brokerCmdProps.getCommandArg();
boolean force = brokerCmdProps.forceModeSet();
if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
targetAttrs = brokerCmdProps.getTargetAttrs();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_BKR));
Globals.stdOutPrintln("");
printAttrs(targetAttrs);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_UPDATE_BKR_OK), noShort);
Globals.stdOutPrintln("");
if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_BKR_NOOP));
return (0);
} else if (!(yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input))) {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_BKR_NOOP));
return (1);
}
}
try {
connectToBroker(broker);
broker.sendUpdateBrokerPropsMessage(targetAttrs);
broker.receiveUpdateBrokerPropsReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_BKR_FAIL));
return (1);
}
} else if (CMDARG_SERVICE.equals(commandArg)) {
ServiceInfo si;
String svcName;
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
targetAttrs = brokerCmdProps.getTargetAttrs();
svcName = brokerCmdProps.getTargetName();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC, svcName));
Globals.stdOutPrintln("");
printAttrs(targetAttrs);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
si = getServiceInfoFromAttrs(targetAttrs);
si.setName(svcName);
/*
* Get the svcPort value.
*/
int svcType = -1;
int svcPort = -1;
Vector svc = null;
try {
connectToBroker(broker);
broker.sendGetServicesMessage(svcName);
svc = broker.receiveGetServicesReplyMessage();
if ((svc != null) && (svc.size() == 1)) {
Enumeration thisEnum = svc.elements();
ServiceInfo sInfo = (ServiceInfo)thisEnum.nextElement();
svcType = sInfo.type;
svcPort = sInfo.port;
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_FAIL));
return (1);
}
if (!force) {
/*
* Rollback the fix for bug 4432483: jmqcmd, jmqadmin: setting
* admin max threads = 0 is allowed & hangs.
* Now this check is done by the broker.
if ((si.isModified(ServiceInfo.MAX_THREADS)) && (si.maxThreads == 0)) {
Globals.stdErrPrintln(ar.getString(ar.W_SET_MAX_THREAD_ZERO, svcName));
}
*/
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_UPDATE_SVC_OK), noShort);
Globals.stdOutPrintln("");
if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_NOOP));
return (0);
} else if (!(yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input))) {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_NOOP));
return (1);
}
}
/*
* Rollback the fix for bug 4432483: jmqcmd, jmqadmin: setting
* admin max threads = 0 is allowed & hangs.
if ((si.isModified(ServiceInfo.MAX_THREADS)) && (si.maxThreads == 0) &&
(ServiceType.ADMIN == svcType)) {
Globals.stdErrPrintln(ar.getString(ar.E_ADMIN_MAX_THREAD));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_FAIL));
return (1);
}
*/
// If the port is -1, it is not used, so disallow the update.
if ((si.isModified(ServiceInfo.PORT)) && (svcPort == -1)) {
Globals.stdErrPrintln(ar.getString
(ar.E_PORT_NOT_ALLOWED_TO_CHANGE, svcName));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_FAIL));
return (1);
}
try {
broker.sendUpdateServiceMessage(si);
broker.receiveUpdateServiceReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_SVC_FAIL));
return (1);
}
} else if (CMDARG_DESTINATION.equals(commandArg)) {
DestinationInfo di;
String destName;
int destTypeMask;
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_DEST_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
targetAttrs = brokerCmdProps.getTargetAttrs();
destTypeMask = getDestTypeMask(brokerCmdProps);
destName = brokerCmdProps.getTargetName();
if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln(ar.getString(
ar.I_JMQCMD_UPDATE_DEST_Q, destName));
} else {
Globals.stdOutPrintln(ar.getString(
ar.I_JMQCMD_UPDATE_DEST_T, destName));
}
Globals.stdOutPrintln("");
printAttrs(targetAttrs);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
if (!force) {
if (updatingDestXMLSchema(targetAttrs)) {
Object args[] = new Object [ 3 ];
args[0] = PROP_NAME_VALIDATE_XML_SCHEMA_ENABLED;
args[1] = PROP_NAME_XML_SCHEMA_URI_LIST;
args[2] = PROP_NAME_RELOAD_XML_SCHEMA_ON_FAILURE;
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_UPDATE_DEST_XML_SCHEMA_OK,
args), noShort);
} else {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_UPDATE_DEST_OK), noShort);
}
Globals.stdOutPrintln("");
if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_DEST_NOOP));
return (0);
} else if (!(yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input))) {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_DEST_NOOP));
return (1);
}
}
try {
di = getDestinationInfoFromAttrs(targetAttrs);
di.setType(destTypeMask);
di.setName(destName);
connectToBroker(broker);
broker.sendUpdateDestinationMessage(di);
broker.receiveUpdateDestinationReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UPDATE_DEST_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UPDATE_DEST_FAIL));
return (1);
}
}
broker.close();
return (0);
}
private void printAttrs(Properties targetAttrs) {
printAttrs(targetAttrs, false);
}
private void printAttrs(Properties targetAttrs, boolean printTitle) {
CommonCmdRunnerUtil.printAttrs(targetAttrs, printTitle, new BrokerCmdPrinter());
}
private ServiceInfo getServiceInfoFromAttrs(Properties svcAttrs) {
ServiceInfo si = new ServiceInfo();
for (Enumeration e = svcAttrs.propertyNames(); e.hasMoreElements() ;) {
String propName = (String)e.nextElement(),
value = svcAttrs.getProperty(propName);
int intValue = 0;
boolean valueOK = true;
if (propName.equals(PROP_NAME_SVC_PORT)) {
try {
intValue = Integer.parseInt(value);
} catch (NumberFormatException nfe) {
valueOK = false;
}
if (valueOK) {
si.setPort(intValue);
}
continue;
}
if (propName.equals(PROP_NAME_SVC_MIN_THREADS)) {
try {
intValue = Integer.parseInt(value);
} catch (NumberFormatException nfe) {
valueOK = false;
}
if (valueOK) {
si.setMinThreads(intValue);
}
continue;
}
if (propName.equals(PROP_NAME_SVC_MAX_THREADS)) {
try {
intValue = Integer.parseInt(value);
} catch (NumberFormatException nfe) {
valueOK = false;
}
if (valueOK) {
si.setMaxThreads(intValue);
}
continue;
}
}
return (si);
}
private boolean updatingDestXMLSchema(Properties dstAttrs) {
String value;
if (dstAttrs == null) {
return (false);
}
value = dstAttrs.getProperty(PROP_NAME_VALIDATE_XML_SCHEMA_ENABLED);
if ((value != null) && !value.equals("")) {
return (true);
}
value = dstAttrs.getProperty(PROP_NAME_XML_SCHEMA_URI_LIST);
if ((value != null) && !value.equals("")) {
return (true);
}
value = dstAttrs.getProperty(PROP_NAME_RELOAD_XML_SCHEMA_ON_FAILURE);
if ((value != null) && !value.equals("")) {
return (true);
}
return (false);
}
private DestinationInfo getDestinationInfoFromAttrs(Properties destAttrs) {
DestinationInfo di = new DestinationInfo();
for (Enumeration e = destAttrs.propertyNames(); e.hasMoreElements() ;) {
String propName = (String)e.nextElement(),
value = destAttrs.getProperty(propName);
SizeString ss;
int intValue = 0;
long longValue = 0;
boolean valueOK = true;
/*
* maxTotalMsgBytes
*/
if (propName.equals(PROP_NAME_OPTION_MAX_MESG_BYTE)) {
try {
ss = new SizeString(value);
longValue = ss.getBytes();
} catch (NumberFormatException nfe) {
valueOK = false;
}
if (valueOK) {
di.setMaxMessageBytes(longValue);
}
continue;
}
/*
* maxNumMsgs
*/
if (propName.equals(PROP_NAME_OPTION_MAX_MESG)) {
try {
intValue = Integer.parseInt(value);
} catch (NumberFormatException nfe) {
valueOK = false;
}
if (valueOK) {
di.setMaxMessages(intValue);
}
continue;
}
/*
* maxBytesPerMsg
*/
if (propName.equals(PROP_NAME_OPTION_MAX_PER_MESG_SIZE)) {
try {
ss = new SizeString(value);
longValue = ss.getBytes();
} catch (NumberFormatException nfe) {
valueOK = false;
}
if (valueOK) {
di.setMaxMessageSize(longValue);
}
continue;
}
/*
* maxFailoverConsumerCount
*/
if (propName.equals(PROP_NAME_MAX_FAILOVER_CONSUMER_COUNT)) {
try {
di.setMaxFailoverConsumers(Integer.parseInt(value));
} catch (NumberFormatException nfe) {
}
}
/*
* maxNumBackupConsumers
*/
if (propName.equals(PROP_NAME_MAX_ACTIVE_CONSUMER_COUNT)) {
try {
di.setMaxActiveConsumers(Integer.parseInt(value));
} catch (NumberFormatException nfe) {
}
}
/*
* isLocalDestination
*/
if (propName.equals(PROP_NAME_IS_LOCAL_DEST)) {
di.setScope(Boolean.valueOf(value).booleanValue());
}
/*
* limitBehaviour
*/
if (propName.equals(PROP_NAME_LIMIT_BEHAVIOUR)) {
di.setLimitBehavior(getLimitBehavValue(value));
}
/*
* localDeliveryPreferred
*/
if (propName.equals(PROP_NAME_LOCAL_DELIVERY_PREF)) {
di.setClusterDeliveryPolicy(getClusterDeliveryPolicy(value));
}
/*
* maxPrefetchCount
*/
if (propName.equals(PROP_NAME_CONSUMER_FLOW_LIMIT)) {
try {
di.setPrefetch(Integer.parseInt(value));
} catch (NumberFormatException nfe) {
}
}
/*
* maxProducerCount
*/
if (propName.equals(PROP_NAME_MAX_PRODUCERS)) {
try {
di.setMaxProducers(Integer.parseInt(value));
} catch (NumberFormatException nfe) {
}
}
/*
* useDMQ
*/
if (propName.equals(PROP_NAME_USE_DMQ)) {
di.setUseDMQ(Boolean.valueOf(value).booleanValue());
}
if (propName.equals(PROP_NAME_VALIDATE_XML_SCHEMA_ENABLED)) {
di.setValidateXMLSchemaEnabled(Boolean.valueOf(value).booleanValue());
}
if (propName.equals(PROP_NAME_XML_SCHEMA_URI_LIST)) {
di.setXMLSchemaUriList(value);
}
if (propName.equals(PROP_NAME_RELOAD_XML_SCHEMA_ON_FAILURE)) {
di.setReloadXMLSchemaOnFailure(Boolean.valueOf(value).booleanValue());
}
}
return (di);
}
private int runQuery(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
broker = init();
// Check for the target argument.
// Valid values are dst and svc.
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetDestinationsMessage(destName, destTypeMask);
Vector dest = broker.receiveGetDestinationsReplyMessage();
if ((dest != null) && (dest.size() == 1)) {
Enumeration thisEnum = dest.elements();
DestinationInfo dInfo = (DestinationInfo)thisEnum.nextElement();
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
bcp.setSortNeeded(false);
/*
* Basic info - name/type/state etc.
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_NAME);
row[1] = dInfo.name;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_TYPE);
row[1] = BrokerAdminUtil.getDestinationType(dInfo.type);
// If the destination is temporary, indicate so.
if (DestType.isTemporary(dInfo.type))
row[1] = row[1] + " ("
+ ar.getString(ar.I_TEMPORARY)
+ ")";
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_STATE);
//row[1] = DestState.toString(dInfo.destState);
row[1] = BrokerAdminUtil.getDestinationState(dInfo.destState);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CREATED_ADMIN);
if (dInfo.autocreated) {
row[1] = Boolean.FALSE.toString();
} else {
row[1] = Boolean.TRUE.toString();
}
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Current' numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_MSG);
row[1] = "";
bcp.add(row);
String indent = " ";
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_ACTUAL);
row[1] = new Integer(dInfo.nMessages - dInfo.nTxnMessages).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_REMOTE);
row[1] = new Integer(dInfo.nRemoteMessages).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_HELD_IN_TXN);
row[1] = new Integer(dInfo.nTxnMessages).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_MSG_BYTES);
row[1] = "";
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_ACTUAL);
row[1] = new Long(dInfo.nMessageBytes - dInfo.nTxnMessageBytes).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_REMOTE);
row[1] = new Long(dInfo.nRemoteMessageBytes).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_HELD_IN_TXN);
row[1] = new Long(dInfo.nTxnMessageBytes).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_PRODUCERS);
row[1] = new Integer(dInfo.nProducers).toString();
bcp.add(row);
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_ACTIVE_CONS);
row[1] = new Integer(dInfo.naConsumers).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_FAILOVER_CONS);
row[1] = new Integer(dInfo.nfConsumers).toString();
bcp.add(row);
} else {
Hashtable h = dInfo.producerWildcards;
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_NUM_PRODUCERS_WILDCARD);
row[1] = Integer.toString(getWildcardCount(h));
bcp.add(row);
/*
* The code below will print something like:
*
* foo.bar.* (2)
* bar.* (1)
*/
Enumeration keys;
if (h != null) {
keys = h.keys();
while (keys.hasMoreElements()) {
String wildcard = (String)keys.nextElement();
Integer val = (Integer)h.get(wildcard);
row[0] = indent + wildcard + " (" + val + ")";
row[1] = "";
bcp.add(row);
}
}
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_CONS);
row[1] = new Integer(dInfo.nConsumers).toString();
bcp.add(row);
h = dInfo.consumerWildcards;
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_NUM_CONSUMERS_WILDCARD);
row[1] = Integer.toString(getWildcardCount(h));
bcp.add(row);
if (h != null) {
keys = h.keys();
while (keys.hasMoreElements()) {
String wildcard = (String)keys.nextElement();
Integer val = (Integer)h.get(wildcard);
row[0] = indent + wildcard + " (" + val + ")";
row[1] = "";
bcp.add(row);
}
}
}
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Current' numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_MSG_ALLOW);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxMessages, zeroNegOneInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_MSG_BYTES_ALLOW);
row[1] = checkAndPrintUnlimitedLong(dInfo.maxMessageBytes,
zeroNegOneLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_BYTES_PER_MSG_ALLOW);
row[1] = new Long(dInfo.maxMessageSize).toString();
row[1] = checkAndPrintUnlimitedLong(dInfo.maxMessageSize,
zeroNegOneLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_PRODUCERS);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxProducers, -1);
bcp.add(row);
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_ACTIVE_CONSUMER_COUNT);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxActiveConsumers, -1);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_FAILOVER_CONSUMER_COUNT);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxFailoverConsumers, -1);
bcp.add(row);
}
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Other misc props
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_LIMIT_BEHAVIOUR);
row[1] = DestLimitBehavior.getString(dInfo.destLimitBehavior);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CONS_FLOW_LIMIT);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxPrefetch, -1);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_IS_LOCAL_DEST);
if (dInfo.isDestinationLocal()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_LOCAL_DELIVERY_PREF);
if (dInfo.destCDP == ClusterDeliveryPolicy.LOCAL_PREFERRED) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
}
row[0] = ar.getString(ar.I_JMQCMD_DST_USE_DMQ);
if (dInfo.useDMQ()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_VALIDATE_XML_SCHEMA_ENABLED);
if (dInfo.validateXMLSchemaEnabled()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_XML_SCHEMA_URI_LIST);
row[1] = dInfo.XMLSchemaUriList;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_RELOAD_XML_SCHEMA_ON_FAILURE);
if (dInfo.reloadXMLSchemaOnFailure()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_FAIL));
return (1);
}
} else if (CMDARG_SERVICE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String svcName = brokerCmdProps.getTargetName();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC));
printServiceInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetServicesMessage(svcName);
Vector svc = broker.receiveGetServicesReplyMessage();
if ((svc != null) && (svc.size() == 1)) {
Enumeration thisEnum = svc.elements();
ServiceInfo sInfo = (ServiceInfo)thisEnum.nextElement();
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
bcp.setSortNeeded(false);
/*
* Basic info - name/port/state
*/
row[0] = ar.getString(ar.I_JMQCMD_SVC_NAME);
row[1] = sInfo.name;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_SVC_STATE);
//row[1] = ServiceState.getString(sInfo.state);
row[1] = BrokerAdminUtil.getServiceState(sInfo.state);
bcp.add(row);
// ONLY display port number if it is applicable
// It is NOT applicable if it is set to -1
if (sInfo.port != -1) {
row[0] = ar.getString(ar.I_JMQCMD_SVC_PORT);
// Add more information about the port number:
// dynamically generated or statically declared
if (sInfo.dynamicPort) {
switch (sInfo.state) {
case ServiceState.UNKNOWN:
row[1] = ar.getString(ar.I_DYNAMIC);
break;
default:
row[1] = new Integer(sInfo.port).toString()
+
" ("
+
ar.getString(ar.I_DYNAMIC)
+
")";
}
} else {
row[1] = new Integer(sInfo.port).toString() +
" (" + ar.getString(ar.I_STATIC) + ")";
}
bcp.add(row);
}
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Curent' numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_SVC_CUR_THREADS);
row[1] = new Integer(sInfo.currentThreads).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_SVC_NUM_CXN);
row[1] = new Integer(sInfo.nConnections).toString();
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Min/Max numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_SVC_MIN_THREADS);
row[1] = new Integer(sInfo.minThreads).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_SVC_MAX_THREADS);
row[1] = new Integer(sInfo.maxThreads).toString();
bcp.add(row);
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_FAIL));
return (1);
}
} else if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetBrokerPropsMessage();
Properties bkrProps = broker.receiveGetBrokerPropsReplyMessage();
if (bkrProps == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
return (1);
}
if (brokerCmdProps.adminDebugModeSet()) {
printAllBrokerAttrs(bkrProps);
} else {
printDisplayableBrokerAttrs(bkrProps);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
return (1);
}
} else if (CMDARG_TRANSACTION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String tidStr = brokerCmdProps.getTargetName();
Long tid = null;
try {
tid = Long.valueOf(tidStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_TXN_ID, tidStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN));
printTransactionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetTxnsMessage(tid);
Vector txns = broker.receiveGetTxnsReplyMessage();
if ((txns != null) && (txns.size() == 1)) {
Enumeration thisEnum = txns.elements();
Hashtable txnInfo = (Hashtable)thisEnum.nextElement();
if (brokerCmdProps.debugModeSet()) {
printAllTxnAttrs(txnInfo);
} else {
printDisplayableTxnAttrs(txnInfo);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
} else if (CMDARG_CONNECTION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String cxnIdStr = brokerCmdProps.getTargetName();
Long cxnId = null;
try {
cxnId = Long.valueOf(cxnIdStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_CXN_ID, cxnIdStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN));
printConnectionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetConnectionsMessage(null, cxnId);
Vector cxnList = broker.receiveGetConnectionsReplyMessage();
if ((cxnList != null) && (cxnList.size() == 1)) {
Enumeration thisEnum = cxnList.elements();
Hashtable cxnInfo = (Hashtable)thisEnum.nextElement();
if (brokerCmdProps.debugModeSet()) {
printAllCxnAttrs(cxnInfo);
} else {
printDisplayableCxnAttrs(cxnInfo);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
} else if (CMDARG_MSG.equals(commandArg)) {
if (broker == null) {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_FAIL));
*/
Globals.stdErrPrintln("Querying message failed.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
String msgID = brokerCmdProps.getMsgID();
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG));
*/
Globals.stdOutPrintln("Querying message:");
printMessageInfo();
Globals.stdOutPrintln("In the destination");
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetMessagesMessage(destName, destTypeMask, true, msgID,
null, null);
Vector msgList = broker.receiveGetMessagesReplyMessage();
if ((msgList != null) && (msgList.size() == 1)) {
HashMap oneMsg = (HashMap)msgList.get(0);
printDisplayableMsgAttrs(oneMsg);
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully queried message.");
} else {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_NONE));
*/
Globals.stdErrPrintln("There are no messages.");
Globals.stdOutPrintln("");
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully queried message.");
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_FAIL));
*/
Globals.stdErrPrintln("Querying message failed.");
return (1);
}
}
if (broker.isConnected()) {
broker.close();
}
return (0);
}
private int runMetrics(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
BrokerCmdPrinter bcp;
String commandArg;
String titleRow[];
long sleepTime;
int metricType,
metricSamples;
broker = init();
commandArg = brokerCmdProps.getCommandArg();
sleepTime = brokerCmdProps.getMetricInterval();
metricType = getMetricType(brokerCmdProps);
metricSamples = brokerCmdProps.getMetricSamples();
if (CMDARG_SERVICE.equals(commandArg)) {
bcp = setupMetricTitle(commandArg, metricType);
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_SVC_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String svcName = brokerCmdProps.getTargetName();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_METRICS_SVC));
printServiceInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
MetricCounters previousMetrics = null;
int rowsPrinted = 0;
connectToBroker(broker);
while (true) {
broker.sendGetMetricsMessage(svcName);
MetricCounters mc = (MetricCounters)broker.receiveGetMetricsReplyMessage();
if (mc == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_SVC_FAIL));
return (1);
}
addOneMetricRow(metricType, bcp, mc, previousMetrics);
if ((rowsPrinted % 20) == 0) {
bcp.print();
} else {
bcp.print(false);
}
bcp.clear();
previousMetrics = mc;
rowsPrinted++;
if (metricSamples > 0) {
if (metricSamples == rowsPrinted) {
break;
}
}
try {
Thread.sleep(sleepTime * 1000);
} catch (InterruptedException ie) {
Globals.stdErrPrintln(ie.toString());
}
}
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_METRICS_SVC_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_SVC_FAIL));
return (1);
}
} else if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_BKR_FAIL));
return (1);
}
bcp = setupMetricTitle(commandArg, metricType);
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_METRICS_BKR));
printBrokerInfo(broker);
try {
MetricCounters previousMetrics = null;
int rowsPrinted = 0;
connectToBroker(broker);
while (true) {
broker.sendGetMetricsMessage(null);
MetricCounters mc = (MetricCounters)broker.receiveGetMetricsReplyMessage();
if (mc == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_BKR_FAIL));
return (1);
}
addOneMetricRow(metricType, bcp, mc, previousMetrics);
if ((rowsPrinted % 20) == 0) {
bcp.print();
} else {
bcp.print(false);
}
bcp.clear();
previousMetrics = mc;
rowsPrinted++;
if (metricSamples > 0) {
if (metricSamples == rowsPrinted) {
break;
}
}
try {
Thread.sleep(sleepTime * 1000);
} catch (InterruptedException ie) {
Globals.stdErrPrintln(ie.toString());
}
}
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_METRICS_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_BKR_FAIL));
return (1);
}
} else if (CMDARG_DESTINATION.equals(commandArg)) {
String destName;
int destTypeMask;
destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
bcp = setupDestMetricTitle(commandArg, metricType, destTypeMask);
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_DST_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_METRICS_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
DestMetricsCounters previousMetrics = null;
int rowsPrinted = 0;
connectToBroker(broker);
while (true) {
broker.sendGetMetricsMessage(destName, destTypeMask);
DestMetricsCounters mc
= (DestMetricsCounters)broker.receiveGetMetricsReplyMessage();
if (mc == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_DST_FAIL));
return (1);
}
addOneDestMetricRow(metricType, destTypeMask, bcp, mc,
previousMetrics);
if ((rowsPrinted % 20) == 0) {
bcp.print();
} else {
bcp.print(false);
}
bcp.clear();
previousMetrics = mc;
rowsPrinted++;
if (metricSamples > 0) {
if (metricSamples == rowsPrinted) {
break;
}
}
try {
Thread.sleep(sleepTime * 1000);
} catch (InterruptedException ie) {
Globals.stdErrPrintln(ie.toString());
}
}
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_METRICS_DST_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_METRICS_DST_FAIL));
return (1);
}
}
if (broker.isConnected()) {
broker.close();
}
return (0);
}
private BrokerCmdPrinter setupListDestTitle(int listType) {
BrokerCmdPrinter bcp = null;
if (listType != LIST_QUEUE) {
bcp = new BrokerCmdPrinter(11, 2, "-");
String[] row = new String[11];
int span[], i = 0;
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
span = new int [ 11 ];
span[i++] = 1;
span[i++] = 1;
span[i++] = 1;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 4;
span[i++] = 0;
span[i++] = 0;
span[i++] = 0;
i = 0;
row[i++] = ar.getString(ar.I_JMQCMD_DST_NAME_SHORT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_TYPE_SHORT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_STATE_SHORT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_NUM_PRODUCER);
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_DST_NUM_CONSUMER);
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS);
row[i++] = "";
row[i++] = "";
row[i++] = "";
bcp.addTitle(row, span);
i = 0;
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_DST_PRODUCERS_TOTAL);
row[i++] = ar.getString(ar.I_JMQCMD_DST_WILDCARD);
row[i++] = ar.getString(ar.I_JMQCMD_DST_CONSUMERS_TOTAL);
row[i++] = ar.getString(ar.I_JMQCMD_DST_WILDCARD);
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS_TOTAL_COUNT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_REMOTE);
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS_UNACK_COUNT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS_AVG_SIZE);
bcp.addTitle(row);
} else {
bcp = new BrokerCmdPrinter(10, 2, "-");
String[] row = new String[10];
int span[], i = 0;
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
span = new int [ 10 ];
span[i++] = 1;
span[i++] = 1;
span[i++] = 1;
span[i++] = 1;
span[i++] = 2;
span[i++] = 0;
span[i++] = 4;
span[i++] = 0;
span[i++] = 0;
span[i++] = 0;
i = 0;
row[i++] = ar.getString(ar.I_JMQCMD_DST_NAME_SHORT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_TYPE_SHORT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_STATE_SHORT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_NUM_PRODUCER);
row[i++] = ar.getString(ar.I_JMQCMD_DST_NUM_CONSUMER);
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS);
row[i++] = "";
row[i++] = "";
bcp.addTitle(row, span);
i = 0;
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_DST_CONSUMERS_ACTIVE);
row[i++] = ar.getString(ar.I_JMQCMD_DST_CONSUMERS_BACKUP);
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS_TOTAL_COUNT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_REMOTE);
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS_UNACK_COUNT);
row[i++] = ar.getString(ar.I_JMQCMD_DST_MSGS_AVG_SIZE);
bcp.addTitle(row);
}
return(bcp);
}
private BrokerCmdPrinter setupMetricTitle(String commandArg, int metricType) {
String titleRow[];
BrokerCmdPrinter bcp = null;
if (metricType == METRICS_TOTALS) {
int i = 0, span[];
span = new int [ 8 ];
bcp = new BrokerCmdPrinter(8, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[8];
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSG_BYTES);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_PKTS);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_PKT_BYTES);
titleRow[i++] = "";
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
bcp.addTitle(titleRow);
} else if (metricType == METRICS_RATES) {
int i = 0, span[];
span = new int [ 8 ];
bcp = new BrokerCmdPrinter(8, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[8];
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_PER_SEC);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSG_BYTES_PER_SEC);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_PKTS_PER_SEC);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_PKT_BYTES_PER_SEC);
titleRow[i++] = "";
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
bcp.addTitle(titleRow);
} else if (metricType == METRICS_CONNECTIONS) {
int i = 0, span[];
titleRow = new String[6];
span = new int [ 6 ];
bcp = new BrokerCmdPrinter(6, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
span[i++] = 1;
span[i++] = 2;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_CON_NUM_CON1);
titleRow[i++] = ar.getString(ar.I_METRICS_JVM_HEAP_BYTES);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_THREADS);
titleRow[i++] = "";
titleRow[i++] = "";
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_CON_NUM_CON2);
titleRow[i++] = ar.getString(ar.I_METRICS_TOTAL);
titleRow[i++] = ar.getString(ar.I_METRICS_FREE);
titleRow[i++] = ar.getString(ar.I_METRICS_ACTIVE);
titleRow[i++] = ar.getString(ar.I_METRICS_LOW);
titleRow[i++] = ar.getString(ar.I_METRICS_HIGH);
bcp.addTitle(titleRow);
}
return (bcp);
}
private BrokerCmdPrinter setupDestMetricTitle(String commandArg, int metricType,
int destTypeMask) {
String titleRow[];
BrokerCmdPrinter bcp = null;
if (metricType == METRICS_TOTALS) {
bcp = new BrokerCmdPrinter(11, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[11];
int i, span[] = new int[ 11 ];
i = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 1;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSG_BYTES);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_COUNT);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_DST_MSGS_BYTES);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_DST_MSGS_LARGEST1);
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_DST_MSGS_LARGEST2);
bcp.addTitle(titleRow);
} else if (metricType == METRICS_RATES) {
bcp = new BrokerCmdPrinter(11, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[11];
int i, span[] = new int[ 11 ];
i = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 2;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 1;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_PER_SEC);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSG_BYTES_PER_SEC);
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_COUNT);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_DST_MSGS_BYTES);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_DST_MSGS_LARGEST1);
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_IN);
titleRow[i++] = ar.getString(ar.I_METRICS_OUT);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_DST_MSGS_LARGEST2);
bcp.addTitle(titleRow);
} else if (metricType == METRICS_CONSUMER) {
if (DestType.isQueue(destTypeMask)) {
bcp = new BrokerCmdPrinter(9, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[9];
int i, span[] = new int[ 9 ];
i = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_DST_CON_ACTIVE_CONSUMERS);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_DST_CON_BACKUP_CONSUMERS);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_COUNT);
titleRow[i++] = "";
titleRow[i++] = "";
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
bcp.addTitle(titleRow);
} else {
bcp = new BrokerCmdPrinter(6, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[6];
int i, span[] = new int[ 6 ];
i = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_DST_CON_CONSUMERS);
titleRow[i++] = "";
titleRow[i++] = "";
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_COUNT);
titleRow[i++] = "";
titleRow[i++] = "";
bcp.addTitle(titleRow, span);
i = 0;
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
titleRow[i++] = ar.getString(ar.I_METRICS_CURRENT);
titleRow[i++] = ar.getString(ar.I_METRICS_PEAK);
titleRow[i++] = ar.getString(ar.I_METRICS_AVERAGE);
bcp.addTitle(titleRow);
}
} else if (metricType == METRICS_DISK) {
bcp = new BrokerCmdPrinter(3, 2, "-", BrokerCmdPrinter.CENTER);
titleRow = new String[3];
titleRow[0] = ar.getString(ar.I_METRICS_DSK_RESERVED);
titleRow[1] = ar.getString(ar.I_METRICS_DSK_USED);
titleRow[2] = ar.getString(ar.I_METRICS_DSK_UTIL_RATIO);
bcp.addTitle(titleRow);
} else if (metricType == METRICS_REMOVE) {
bcp = new BrokerCmdPrinter(3, 2, "-", BrokerCmdPrinter.CENTER);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
titleRow = new String[3];
int i, span[] = new int[ 3 ];
i = 0;
span[i++] = 3;
span[i++] = 0;
span[i++] = 0;
i = 0;
/*
titleRow[i++] = ar.getString(ar.I_METRICS_MSGS_REMOVED);
*/
titleRow[i++] = "Msgs Removed";
titleRow[i++] = "";
titleRow[i++] = "";
bcp.addTitle(titleRow, span);
i = 0;
/*
titleRow[i++] = ar.getString(ar.I_METRICS_EXPIRED);
titleRow[i++] = ar.getString(ar.I_METRICS_DISCARDED);
titleRow[i++] = ar.getString(ar.I_METRICS_PURGED);
*/
titleRow[i++] = "Expired";
titleRow[i++] = "Discarded";
titleRow[i++] = "Purged";
bcp.addTitle(titleRow);
}
return (bcp);
}
private void addOneMetricRow(int metricType, BrokerCmdPrinter bcp,
MetricCounters latest,
MetricCounters previous) {
String metricRow[];
if (metricType == METRICS_TOTALS) {
metricRow = new String[8];
metricRow[0] = Long.toString(latest.messagesIn);
metricRow[1] = Long.toString(latest.messagesOut);
metricRow[2] = Long.toString(latest.messageBytesIn);
metricRow[3] = Long.toString(latest.messageBytesOut);
metricRow[4] = Long.toString(latest.packetsIn);
metricRow[5] = Long.toString(latest.packetsOut);
metricRow[6] = Long.toString(latest.packetBytesIn);
metricRow[7] = Long.toString(latest.packetBytesOut);
bcp.add(metricRow);
} else if (metricType == METRICS_RATES) {
metricRow = new String[8];
if (previous == null) {
metricRow[0] = "0";
metricRow[1] = "0";
metricRow[2] = "0";
metricRow[3] = "0";
metricRow[4] = "0";
metricRow[5] = "0";
metricRow[6] = "0";
metricRow[7] = "0";
} else {
float secs;
secs = (float)(latest.timeStamp - previous.timeStamp)/(float)1000;
metricRow[0] = CommonCmdRunnerUtil.getRateString(latest.messagesIn,
previous.messagesIn, secs);
metricRow[1] = CommonCmdRunnerUtil.getRateString(latest.messagesOut,
previous.messagesOut, secs);
metricRow[2] = CommonCmdRunnerUtil.getRateString(latest.messageBytesIn,
previous.messageBytesIn, secs);
metricRow[3] = CommonCmdRunnerUtil.getRateString(latest.messageBytesOut,
previous.messageBytesOut, secs);
metricRow[4] = CommonCmdRunnerUtil.getRateString(latest.packetsIn,
previous.packetsIn, secs);
metricRow[5] = CommonCmdRunnerUtil.getRateString(latest.packetsOut,
previous.packetsOut, secs);
metricRow[6] = CommonCmdRunnerUtil.getRateString(latest.packetBytesIn,
previous.packetBytesIn, secs);
metricRow[7] = CommonCmdRunnerUtil.getRateString(latest.packetBytesOut,
previous.packetBytesOut, secs);
}
bcp.add(metricRow);
} else if (metricType == METRICS_CONNECTIONS) {
metricRow = new String[6];
metricRow[0] = Integer.toString(latest.nConnections);
metricRow[1] = Long.toString(latest.totalMemory);
metricRow[2] = Long.toString(latest.freeMemory);
metricRow[3] = Integer.toString(latest.threadsActive);
metricRow[4] = Integer.toString(latest.threadsLowWater);
metricRow[5] = Integer.toString(latest.threadsHighWater);
bcp.add(metricRow);
}
}
private void addOneDestMetricRow(int metricType, int destTypeMask,
BrokerCmdPrinter bcp,
DestMetricsCounters latestDest,
DestMetricsCounters previousDest) {
String metricRow[];
if (metricType == METRICS_TOTALS) {
metricRow = new String[11];
metricRow[0] = Integer.toString(latestDest.getMessagesIn());
metricRow[1] = Integer.toString(latestDest.getMessagesOut());
metricRow[2] = Long.toString(latestDest.getMessageBytesIn());
metricRow[3] = Long.toString(latestDest.getMessageBytesOut());
metricRow[4] = Integer.toString(latestDest.getCurrentMessages());
metricRow[5] = Integer.toString(latestDest.getHighWaterMessages());
metricRow[6] = Integer.toString(latestDest.getAverageMessages());
metricRow[7] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getCurrentMessageBytes());
metricRow[8] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getHighWaterMessageBytes());
metricRow[9] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getAverageMessageBytes());
metricRow[10] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getHighWaterLargestMsgBytes());
bcp.add(metricRow);
} else if (metricType == METRICS_RATES) {
metricRow = new String[11];
if (previousDest == null) {
metricRow[0] = "0";
metricRow[1] = "0";
metricRow[2] = "0";
metricRow[3] = "0";
} else {
float secs;
secs = (float)(latestDest.timeStamp - previousDest.timeStamp)/(float)1000;
metricRow[0] = CommonCmdRunnerUtil.getRateString(latestDest.getMessagesIn(),
previousDest.getMessagesIn(), secs);
metricRow[1] = CommonCmdRunnerUtil.getRateString(latestDest.getMessagesOut(),
previousDest.getMessagesOut(), secs);
metricRow[2] = CommonCmdRunnerUtil.getRateString(latestDest.getMessageBytesIn(),
previousDest.getMessageBytesIn(), secs);
metricRow[3] = CommonCmdRunnerUtil.getRateString(latestDest.getMessageBytesOut(),
previousDest.getMessageBytesOut(), secs);
}
metricRow[4] = Integer.toString(latestDest.getCurrentMessages());
metricRow[5] = Integer.toString(latestDest.getHighWaterMessages());
metricRow[6] = Integer.toString(latestDest.getAverageMessages());
metricRow[7] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getCurrentMessageBytes());
metricRow[8] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getHighWaterMessageBytes());
metricRow[9] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getAverageMessageBytes());
metricRow[10] = CommonCmdRunnerUtil.displayInKBytes(latestDest.getHighWaterLargestMsgBytes());
bcp.add(metricRow);
} else if (metricType == METRICS_CONSUMER) {
if (DestType.isQueue(destTypeMask)) {
metricRow = new String[9];
metricRow[0] = Integer.toString(latestDest.getActiveConsumers());
metricRow[1] = Integer.toString(latestDest.getHWActiveConsumers());
metricRow[2] = Integer.toString(latestDest.getAvgActiveConsumers());
metricRow[3] = Integer.toString(latestDest.getFailoverConsumers());
metricRow[4] = Integer.toString(latestDest.getHWFailoverConsumers());
metricRow[5] = Integer.toString(latestDest.getAvgFailoverConsumers());
metricRow[6] = Integer.toString(latestDest.getCurrentMessages());
metricRow[7] = Integer.toString(latestDest.getHighWaterMessages());
metricRow[8] = Integer.toString(latestDest.getAverageMessages());
bcp.add(metricRow);
} else {
metricRow = new String[6];
metricRow[0] = Integer.toString(latestDest.getActiveConsumers());
metricRow[1] = Integer.toString(latestDest.getHWActiveConsumers());
metricRow[2] = Integer.toString(latestDest.getAvgActiveConsumers());
metricRow[3] = Integer.toString(latestDest.getCurrentMessages());
metricRow[4] = Integer.toString(latestDest.getHighWaterMessages());
metricRow[5] = Integer.toString(latestDest.getAverageMessages());
bcp.add(metricRow);
}
} else if (metricType == METRICS_DISK) {
metricRow = new String[3];
metricRow[0] = Long.toString(latestDest.getDiskReserved());
metricRow[1] = Long.toString(latestDest.getDiskUsed());
metricRow[2] = Integer.toString(latestDest.getDiskUtilizationRatio());
bcp.add(metricRow);
} else if (metricType == METRICS_REMOVE) {
metricRow = new String[3];
/*
metricRow[0] = Long.toString(latestDest.getMsgsExpired());
metricRow[1] = Long.toString(latestDest.getMsgsDiscarded());
metricRow[2] = Long.toString(latestDest.getMsgsPurged());
*/
metricRow[0] = "0";
metricRow[1] = "0";
metricRow[2] = "0";
bcp.add(metricRow);
}
}
private int runReload(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
BrokerCmdPrinter bcp;
String commandArg;
String titleRow[];
long sleepTime;
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RELOAD_CLS_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RELOAD_CLS));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendReloadClusterMessage();
broker.receiveReloadClusterReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_RELOAD_CLS_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_RELOAD_CLS_FAIL));
return (1);
}
return (0);
}
private int runChangeMaster(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
BrokerCmdPrinter bcp;
String commandArg;
String yes = ar.getString(ar.Q_RESPONSE_YES);
String yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
String no = ar.getString(ar.Q_RESPONSE_NO);
String noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_CHANGEMASTER_CLS_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force) {
broker = promptForAuthentication(broker);
}
Properties targetAttrs = brokerCmdProps.getTargetAttrs();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHANGEMASTER_CLS));
Globals.stdOutPrintln("");
printAttrs(targetAttrs);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
if (!force) {
String input = CommonCmdRunnerUtil.getUserInput(
ar.getString(ar.Q_CHANGEMASTER_OK), noShort);
Globals.stdOutPrintln("");
if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHANGEMASTER_NOOP));
return (0);
} else if (!(yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input))) {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHANGEMASTER_NOOP));
return (1);
}
}
try {
connectToBroker(broker);
broker.sendClusterChangeMasterMessage(targetAttrs);
broker.receiveClusterChangeMasterReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_CHANGEMASTER_CLS_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_CHANGEMASTER_CLS_FAIL));
return (1);
}
broker.close();
return (0);
}
private int runCommit(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
BrokerCmdPrinter bcp;
String commandArg;
String titleRow[];
String tidStr;
Long tid = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN));
printTransactionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
tidStr = brokerCmdProps.getTargetName();
try {
tid = Long.valueOf(tidStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_TXN_ID, tidStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_FAIL));
return (1);
}
try {
connectToBroker(broker);
/*
* Prompt user for confirmation.
*/
String input = null;
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_COMMIT_TXN_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendCommitTxnMessage(tid);
broker.receiveCommitTxnReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_NOOP));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMMIT_TXN_FAIL));
return (1);
}
return (0);
}
private int runRollback(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
BrokerCmdPrinter bcp;
String commandArg;
String titleRow[];
String tidStr;
Long tid = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN));
printTransactionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
tidStr = brokerCmdProps.getTargetName();
try {
tid = Long.valueOf(tidStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_TXN_ID, tidStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_FAIL));
return (1);
}
try {
Hashtable txnInfo = null;
connectToBroker(broker);
/*
* Obtain/query transaction info to check it's state.
*/
broker.sendGetTxnsMessage(tid);
Vector txns = broker.receiveGetTxnsReplyMessage();
if ((txns != null) && (txns.size() == 1)) {
Enumeration thisEnum = txns.elements();
txnInfo = (Hashtable)thisEnum.nextElement();
if (brokerCmdProps.debugModeSet()) {
printAllTxnAttrs(txnInfo);
}
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_FAIL));
return (1);
}
/*
* Get the transaction's state.
*/
Integer tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_STATE);
String txnState = getTxnStateString(tmpInt);
/*
* Prompt user for confirmation. Show transaction's state.
*/
String input = null;
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_ROLLBACK_TXN_OK, txnState), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendRollbackTxnMessage(tid);
broker.receiveRollbackTxnReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_NOOP));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_ROLLBACK_TXN_FAIL));
return (1);
}
return (0);
}
private int runCompact(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String destName;
int destTypeMask;
String input = null;
String yes, yesShort, no, noShort;
boolean compactAll = true;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
String commandArg = brokerCmdProps.getCommandArg();
boolean force = brokerCmdProps.forceModeSet();
broker = init();
if (CMDARG_DESTINATION.equals(commandArg)) {
destName = brokerCmdProps.getTargetName();
destTypeMask = getDestTypeMask(brokerCmdProps);
if (destName != null) {
compactAll = false;
}
if (broker == null) {
if (compactAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST_FAIL));
}
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
if (compactAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS));
printBrokerInfo(broker);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
}
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
if (compactAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST_FAIL));
}
return (1);
}
if (!force) {
if (compactAll) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_COMPACT_DSTS_OK), noShort);
} else {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_COMPACT_DST_OK), noShort);
}
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input)
|| yes.equalsIgnoreCase(input)
|| force) {
try {
broker.sendCompactDestinationMessage(destName, destTypeMask);
broker.receiveCompactDestinationReplyMessage();
if (compactAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS_SUC));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST_SUC));
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
if (compactAll) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS_FAIL));
} else {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST_FAIL));
}
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
if (compactAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS_NOOP));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST_NOOP));
}
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
if (compactAll) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DSTS_NOOP));
} else {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_COMPACT_DST_NOOP));
}
return (1);
}
}
broker.close();
return (0);
}
private int runQuiesce(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
boolean force = brokerCmdProps.forceModeSet();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_QUIESCE_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendQuiesceMessage();
broker.receiveQuiesceReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUIESCE_BKR_NOOP));
return (1);
}
}
broker.close();
return (0);
}
private int runUnquiesce(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
boolean force = brokerCmdProps.forceModeSet();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR_FAIL));
return (1);
}
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_UNQUIESCE_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendUnquiesceMessage();
broker.receiveUnquiesceReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_UNQUIESCE_BKR_NOOP));
return (1);
}
}
broker.close();
return (0);
}
private int runTakeover(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
String input = null;
String yes, yesShort, no, noShort;
yes = ar.getString(ar.Q_RESPONSE_YES);
yesShort = ar.getString(ar.Q_RESPONSE_YES_SHORT);
no = ar.getString(ar.Q_RESPONSE_NO);
noShort = ar.getString(ar.Q_RESPONSE_NO_SHORT);
broker = init();
boolean force = brokerCmdProps.forceModeSet();
// Check for the target argument
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_BROKER.equals(commandArg)) {
String brokerID = brokerCmdProps.getTargetName();
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR));
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_BKR_PERFORMING_TAKEOVER));
printBrokerInfo(broker);
try {
connectToBroker(broker);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
try {
/*
* Get broker props to find out if broker is in HA cluster and
* broker cluster ID
*/
broker.sendGetBrokerPropsMessage();
Properties bkrProps = broker.receiveGetBrokerPropsReplyMessage();
/*
* Check if cluster is HA or not
*/
String value = bkrProps.getProperty(PROP_NAME_BKR_CLS_HA);
if (!Boolean.valueOf(value).booleanValue()) {
Globals.stdErrPrintln(ar.getString(ar.E_BROKER_NOT_HA));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_BKR_STORE_TAKEOVER));
BrokerCmdPrinter bcp = new BrokerCmdPrinter(5, 3, "-");
String[] row = new String[5];
bcp.setSortNeeded(false);
bcp.setTitleAlign(BrokerCmdPrinter.CENTER);
int i = 0;
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = "";
row[i++] = ar.getString(ar.I_JMQCMD_CLS_TIME_SINCE_TIMESTAMP1);
bcp.addTitle(row);
i = 0;
row[i++] = ar.getString(ar.I_JMQCMD_CLS_BROKER_ID);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_ADDRESS);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_BROKER_STATE);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_NUM_MSGS);
row[i++] = ar.getString(ar.I_JMQCMD_CLS_TIME_SINCE_TIMESTAMP2);
bcp.addTitle(row);
/*
* Get state of each broker in cluster
*/
Vector bkrList = null;
try {
broker.sendGetClusterMessage(true);
bkrList = broker.receiveGetClusterReplyMessage();
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.E_FAILED_TO_OBTAIN_CLUSTER_INFO));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
String brokerIDFromList = null;
boolean found = false;
Enumeration thisEnum = bkrList.elements();
while (thisEnum.hasMoreElements()) {
Hashtable bkrClsInfo = (Hashtable)thisEnum.nextElement();
Long tmpLong;
Integer tmpInt;
long idle;
brokerIDFromList = (String)bkrClsInfo.get(BrokerClusterInfo.ID);
if ((brokerIDFromList == null) ||
(!brokerIDFromList.equals(brokerID))) {
continue;
}
found = true;
i = 0;
row[i++] = checkNullAndPrint(brokerIDFromList);
row[i++] = checkNullAndPrint(
bkrClsInfo.get(BrokerClusterInfo.ADDRESS));
tmpInt = (Integer)bkrClsInfo.get(BrokerClusterInfo.STATE);
if (tmpInt != null) {
row[i++] = BrokerState.toString(tmpInt.intValue());
} else {
row[i++] = "";
}
tmpLong = (Long)bkrClsInfo.get(BrokerClusterInfo.NUM_MSGS);
row[i++] = checkNullAndPrint(tmpLong);
tmpLong = (Long)bkrClsInfo.get(
BrokerClusterInfo.STATUS_TIMESTAMP);
if (tmpLong != null) {
idle = System.currentTimeMillis() - tmpLong.longValue();
row[i++] = CommonCmdRunnerUtil.getTimeString(idle);
} else {
row[i++] = "";
}
bcp.add(row);
/*
* Only need to display info on the one desired broker
*/
break;
}
if (!found) {
Globals.stdErrPrintln(ar.getString(ar.E_CANNOT_FIND_BROKERID, brokerID));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
bcp.println();
if (!force) {
input = CommonCmdRunnerUtil.getUserInput(ar.getString(ar.Q_TAKEOVER_BKR_OK), noShort);
Globals.stdOutPrintln("");
}
if (yesShort.equalsIgnoreCase(input) || yes.equalsIgnoreCase(input) || force) {
try {
broker.sendTakeoverMessage(brokerID);
broker.receiveTakeoverReplyMessage();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_FAIL));
return (1);
}
} else if (noShort.equalsIgnoreCase(input) || no.equalsIgnoreCase(input)) {
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_NOOP));
return (0);
} else {
Globals.stdOutPrintln(ar.getString(ar.I_UNRECOGNIZED_RES, input));
Globals.stdOutPrintln("");
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_TAKEOVER_BKR_NOOP));
return (1);
}
}
broker.close();
return (0);
}
private int runExists(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
int retValue = 1;
broker = init();
// Check for the target argument.
// Valid value is dst only.
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdOutPrintln("Problems connecting to the broker.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
try {
connectToBroker(broker);
broker.sendGetDestinationsMessage(destName, destTypeMask);
Vector dest = broker.receiveGetDestinationsReplyMessage();
if ((dest != null) && (dest.size() == 1)) {
Globals.stdOutPrintln(Boolean.TRUE.toString());
retValue = 0;
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln("Problems retrieving the destination info.");
return (1);
}
} catch (BrokerAdminException bae) {
// com.sun.messaging.jmq.io.Status.java: 404 == not found
if (bae.getReplyStatus() == 404) {
Globals.stdOutPrintln(Boolean.FALSE.toString());
retValue = 0;
} else {
handleBrokerAdminException(bae);
return (1);
}
}
}
return (retValue);
}
private int runGetAttr(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
int retValue = 1;
broker = init();
// Check for the target argument.
// Valid value are dst, svc, and bkr.
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdOutPrintln("Problems connecting to the broker.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
String attrName = brokerCmdProps.getSingleTargetAttr();
try {
connectToBroker(broker);
broker.sendGetDestinationsMessage(destName, destTypeMask);
Vector dest = broker.receiveGetDestinationsReplyMessage();
if ((dest != null) && (dest.size() == 1)) {
Enumeration thisEnum = dest.elements();
DestinationInfo dInfo = (DestinationInfo)thisEnum.nextElement();
if (PROP_NAME_OPTION_MAX_MESG_BYTE.equals(attrName)) {
Globals.stdOutPrintln(Long.toString(dInfo.maxMessageBytes));
retValue = 0;
} else if (PROP_NAME_OPTION_MAX_MESG.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.maxMessages));
retValue = 0;
} else if (PROP_NAME_OPTION_MAX_PER_MESG_SIZE.equals(attrName)) {
Globals.stdOutPrintln(Long.toString(dInfo.maxMessageSize));
retValue = 0;
} else if (PROP_NAME_OPTION_CUR_MESG_BYTE.equals(attrName)) {
Globals.stdOutPrintln(Long.toString(dInfo.nMessageBytes));
retValue = 0;
} else if (PROP_NAME_OPTION_CUR_MESG.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.nMessages));
retValue = 0;
} else if (PROP_NAME_OPTION_CUR_PRODUCERS.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.nProducers));
retValue = 0;
} else if (PROP_NAME_MAX_FAILOVER_CONSUMER_COUNT.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.maxFailoverConsumers));
retValue = 0;
} else if (PROP_NAME_MAX_ACTIVE_CONSUMER_COUNT.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.maxActiveConsumers));
retValue = 0;
} else if (PROP_NAME_IS_LOCAL_DEST.equals(attrName)) {
if (dInfo.isDestinationLocal()) {
Globals.stdOutPrintln(Boolean.TRUE.toString());
} else {
Globals.stdOutPrintln(Boolean.FALSE.toString());
}
retValue = 0;
} else if (PROP_NAME_LIMIT_BEHAVIOUR.equals(attrName)) {
Globals.stdOutPrintln(DestLimitBehavior.getString(dInfo.destLimitBehavior));
retValue = 0;
} else if (PROP_NAME_LOCAL_DELIVERY_PREF.equals(attrName)) {
int cdp = dInfo.destCDP;
if (cdp == ClusterDeliveryPolicy.LOCAL_PREFERRED) {
Globals.stdOutPrintln(Boolean.TRUE.toString());
} else {
Globals.stdOutPrintln(Boolean.FALSE.toString());
}
retValue = 0;
} else if (PROP_NAME_CONSUMER_FLOW_LIMIT.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.maxPrefetch));
retValue = 0;
} else if (PROP_NAME_MAX_PRODUCERS.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.maxProducers));
retValue = 0;
} else if (PROP_NAME_OPTION_CUR_A_CONSUMERS.equals(attrName)) {
if (DestType.isQueue(destTypeMask)) {
Globals.stdOutPrintln(Integer.toString(dInfo.naConsumers));
} else {
Globals.stdOutPrintln(Integer.toString(dInfo.nConsumers));
}
retValue = 0;
} else if (PROP_NAME_OPTION_CUR_B_CONSUMERS.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(dInfo.nfConsumers));
retValue = 0;
} else if (PROP_NAME_USE_DMQ.equals(attrName)) {
Globals.stdOutPrintln(Boolean.toString(dInfo.useDMQ()));
retValue = 0;
} else if (PROP_NAME_VALIDATE_XML_SCHEMA_ENABLED.equals(attrName)) {
Globals.stdOutPrintln(Boolean.toString(dInfo.validateXMLSchemaEnabled()));
retValue = 0;
} else if (PROP_NAME_XML_SCHEMA_URI_LIST.equals(attrName)) {
Globals.stdOutPrintln(dInfo.XMLSchemaUriList);
retValue = 0;
} else if (PROP_NAME_RELOAD_XML_SCHEMA_ON_FAILURE.equals(attrName)) {
Globals.stdOutPrintln(Boolean.toString(dInfo.reloadXMLSchemaOnFailure()));
retValue = 0;
} else {
// Should not get here since we check for valid attribute
// names in BrokerCmd.checkGetAttr().
Globals.stdErrPrintln(attrName + " is not recognized.");
return (1);
}
} else {
Globals.stdErrPrintln("Problems retrieving the destination info.");
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
return (1);
}
return (retValue);
} else if (CMDARG_SERVICE.equals(commandArg)) {
if (broker == null) {
Globals.stdOutPrintln("Problems connecting to the broker.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String svcName = brokerCmdProps.getTargetName();
String attrName = brokerCmdProps.getSingleTargetAttr();
try {
connectToBroker(broker);
broker.sendGetServicesMessage(svcName);
Vector svc = broker.receiveGetServicesReplyMessage();
if ((svc != null) && (svc.size() == 1)) {
Enumeration thisEnum = svc.elements();
ServiceInfo sInfo = (ServiceInfo)thisEnum.nextElement();
if (BrokerCmdOptions.PROP_NAME_SVC_PORT.equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(sInfo.port));
retValue = 0;
} else if (BrokerCmdOptions.PROP_NAME_SVC_MIN_THREADS.
equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(sInfo.minThreads));
retValue = 0;
} else if (BrokerCmdOptions.PROP_NAME_SVC_MAX_THREADS.
equals(attrName)) {
Globals.stdOutPrintln(Integer.toString(sInfo.maxThreads));
retValue = 0;
} else {
// Should not get here since we check for valid attribute
// names in BrokerCmd.checkGetAttr().
Globals.stdOutPrintln(attrName + " is not recognized.");
return (1);
}
} else {
Globals.stdOutPrintln("Problems retrieving the service info.");
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
return (1);
}
return (retValue);
} else if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdOutPrintln("Problems connecting to the broker.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String attrName = brokerCmdProps.getSingleTargetAttr();
try {
connectToBroker(broker);
broker.sendGetBrokerPropsMessage();
Properties bkrProps = broker.receiveGetBrokerPropsReplyMessage();
if (bkrProps == null) {
Globals.stdOutPrintln("Problems retrieving the broker info.");
return (1);
}
String value;
value = bkrProps.getProperty(attrName, "");
Globals.stdOutPrintln(value);
retValue = 0;
/*
if (PROP_NAME_BKR_PRIMARY_PORT.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_PRIMARY_PORT, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_AUTOCREATE_TOPIC.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_AUTOCREATE_TOPIC, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_AUTOCREATE_QUEUE.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_AUTOCREATE_QUEUE, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_MAX_MSG.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_MAX_MSG, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_MAX_TTL_MSG_BYTES.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_MAX_TTL_MSG_BYTES, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_MAX_MSG_BYTES.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_MAX_MSG_BYTES, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_CUR_MSG.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_CUR_MSG, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else if (PROP_NAME_BKR_CUR_TTL_MSG_BYTES.equals(attrName)) {
value = bkrProps.getProperty(PROP_NAME_BKR_CUR_TTL_MSG_BYTES, "");
Globals.stdOutPrintln(value);
retValue = 0;
} else {
// Should not get here since we check for valid attribute
// names in BrokerCmd.checkGetAttr().
Globals.stdOutPrintln(attrName + " is not recognized.");
return (1);
}
*/
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
return (1);
}
}
return (retValue);
}
private int runUngracefulKill(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
broker = init();
if (broker == null) {
Globals.stdOutPrintln("Problems connecting to the broker.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
try {
connectToBroker(broker);
broker.sendShutdownMessage(false, true);
Globals.stdOutPrintln("Ungracefully shutdown the broker.");
return (0);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
return (1);
}
}
private int runDebug(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
BrokerCmdPrinter bcp;
Hashtable debugHash = null;
String cmd, cmdarg, target;
String targetType;
Properties optionalProps = null;
broker = init();
if (broker == null) {
Globals.stdOutPrintln("Problems connecting to the broker.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
cmd = brokerCmdProps.getCommand();
cmdarg = brokerCmdProps.getCommandArg();
target = brokerCmdProps.getTargetName();
/*
* The -t option is used to specify target type
*/
targetType = brokerCmdProps.getDestType();
optionalProps = brokerCmdProps.getTargetAttrs();
Globals.stdOutPrintln("Sending the following DEBUG message:");
bcp = new BrokerCmdPrinter(2, 4, "-", BrokerCmdPrinter.LEFT, false);
String[] row = new String[2];
row[0] = "Header Property Name";
row[1] = "Value";
bcp.addTitle(row);
row[0] = MessageType.JMQ_CMD;
row[1] = cmd;
bcp.add(row);
row[0] = MessageType.JMQ_CMDARG;
row[1] = cmdarg;
bcp.add(row);
if (target != null) {
row[0] = MessageType.JMQ_TARGET;
row[1] = target;
bcp.add(row);
}
if (targetType != null) {
row[0] = MessageType.JMQ_TARGET_TYPE;
row[1] = targetType;
bcp.add(row);
}
bcp.println();
if ((optionalProps != null) && (optionalProps.size() > 0)) {
Globals.stdOutPrintln("Optional properties:");
printAttrs(optionalProps, true);
}
Globals.stdOutPrintln("To the broker specified by:");
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendDebugMessage(cmd, cmdarg, target, targetType, optionalProps);
debugHash = broker.receiveDebugReplyMessage();
if ((debugHash != null) && (debugHash.size() > 0)) {
Globals.stdOutPrintln("Data received back from broker:");
CommonCmdRunnerUtil.printDebugHash(debugHash);
} else {
Globals.stdOutPrintln("No additional data received back from broker.\n");
}
Globals.stdOutPrintln("DEBUG message sent successfully.");
return (0);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
return (1);
}
}
private void printAllBrokerAttrs(Properties bkrProps) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
for (Enumeration e = bkrProps.propertyNames() ; e.hasMoreElements() ;) {
String curPropName = (String)e.nextElement();
row[0] = curPropName;
row[1] = bkrProps.getProperty(curPropName, "");
bcp.add(row);
}
bcp.println();
}
private void printDisplayableBrokerAttrs(Properties bkrProps) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
String value;
bcp.setSortNeeded(false);
/*
* Basic info - version/instance/port
*/
row[0] = ar.getString(ar.I_BKR_VERSION_STR);
value = bkrProps.getProperty(PROP_NAME_BKR_PRODUCT_VERSION, "");
if (value.equals("")) {
value = ar.getString(ar.I_BKR_VERSION_NOT_AVAILABLE);
}
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_BKR_INSTANCE_NAME);
value = bkrProps.getProperty(PROP_NAME_BKR_INSTANCE_NAME, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CLS_BROKER_ID);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_BROKER_ID, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_PRIMARY_PORT);
value = bkrProps.getProperty(PROP_NAME_BKR_PRIMARY_PORT, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_BKR_IS_EMBEDDED);
value = bkrProps.getProperty(PROP_NAME_BKR_IS_EMBEDDED, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CONFIG_DATA_ROOT_DIR);
value = bkrProps.getProperty(PROP_NAME_BKR_VARHOME, "");
row[1] = value;
bcp.add(row);
/*
row[0] = ar.getString(ar.I_JMQCMD_LICENSE);
value = bkrProps.getProperty(PROP_NAME_BKR_LICENSE_DESC, "");
row[1] = value;
bcp.add(row);
*/
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Current' numbers
*/
row[0] = ar.getString(ar.I_CUR_MSGS_IN_BROKER);
value = bkrProps.getProperty(PROP_NAME_BKR_CUR_MSG, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CUR_BYTES_IN_BROKER);
value = bkrProps.getProperty(PROP_NAME_BKR_CUR_TTL_MSG_BYTES, "");
row[1] = value;
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Current' numbers for DMQ
* Log Dead Msgs
*/
row[0] = ar.getString(ar.I_CUR_MSGS_IN_DMQ);
value = bkrProps.getProperty(PROP_NAME_DMQ_CUR_MSG, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CUR_BYTES_IN_DMQ);
value = bkrProps.getProperty(PROP_NAME_DMQ_CUR_TTL_MSG_BYTES, "");
row[1] = value;
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
row[0] = ar.getString(ar.I_BKR_LOG_DEAD_MSGS);
value = bkrProps.getProperty(PROP_NAME_BKR_LOG_DEAD_MSGS, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_BKR_DMQ_TRUNCATE_MSG_BODY);
value = bkrProps.getProperty(PROP_NAME_BKR_DMQ_TRUNCATE_MSG_BODY, "");
row[1] = value;
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Max numbers
*/
row[0] = ar.getString(ar.I_MAX_MSGS_IN_BROKER);
value = bkrProps.getProperty(PROP_NAME_BKR_MAX_MSG, "");
row[1] = checkAndPrintUnlimited(value, zeroNegOneString);
bcp.add(row);
row[0] = ar.getString(ar.I_MAX_BYTES_IN_BROKER);
value = bkrProps.getProperty(PROP_NAME_BKR_MAX_TTL_MSG_BYTES, "");
row[1] = checkAndPrintUnlimitedBytes(value, zeroNegOneLong);
bcp.add(row);
row[0] = ar.getString(ar.I_MAX_MSG_SIZE);
value = bkrProps.getProperty(PROP_NAME_BKR_MAX_MSG_BYTES, "");
row[1] = checkAndPrintUnlimitedBytes(value, zeroNegOneLong);
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Autocreate props
*/
row[0] = ar.getString(ar.I_AUTO_CREATE_QUEUES);
value = bkrProps.getProperty(PROP_NAME_BKR_AUTOCREATE_QUEUE, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_AUTO_CREATE_TOPICS);
value = bkrProps.getProperty(PROP_NAME_BKR_AUTOCREATE_TOPIC, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_AUTOCREATED_QUEUE_MAX_ACTIVE_CONS);
value = bkrProps.getProperty(PROP_NAME_BKR_AUTOCREATE_QUEUE_MAX_ACTIVE_CONS,
"");
row[1] = checkAndPrintUnlimited(value, negOneString);
bcp.add(row);
row[0] = ar.getString(ar.I_AUTOCREATED_QUEUE_MAX_FAILOVER_CONS);
value = bkrProps.getProperty(PROP_NAME_BKR_AUTOCREATE_QUEUE_MAX_BACKUP_CONS,
"");
row[1] = checkAndPrintUnlimited(value, negOneString);
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Cluster related props
*/
row[0] = ar.getString(ar.I_CLS_CLUSTER_ID);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_CLUSTER_ID, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CLS_IS_HA);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_HA);
row[1] = Boolean.valueOf(value).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_CLS_ACTIVE_BROKERLIST);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_BKRLIST_ACTIVE, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CLS_CONFIGD_BROKERLIST);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_BKRLIST, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CLS_CONFIG_SERVER);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_CFG_SVR, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_CLS_URL);
value = bkrProps.getProperty(PROP_NAME_BKR_CLS_URL, "");
row[1] = value;
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Log related props
*/
row[0] = ar.getString(ar.I_LOG_LEVEL);
value = bkrProps.getProperty(PROP_NAME_BKR_LOG_LEVEL, "");
row[1] = value;
bcp.add(row);
row[0] = ar.getString(ar.I_LOG_ROLLOVER_INTERVAL);
value = bkrProps.getProperty(PROP_NAME_BKR_LOG_ROLL_INTERVAL, "");
row[1] = checkAndPrintUnlimited(value, zeroNegOneString);
bcp.add(row);
row[0] = ar.getString(ar.I_LOG_ROLLOVER_SIZE);
value = bkrProps.getProperty(PROP_NAME_BKR_LOG_ROLL_SIZE, "");
row[1] = checkAndPrintUnlimitedBytes(value, zeroNegOneLong);
bcp.add(row);
bcp.println();
}
private void printAllTxnAttrs(Hashtable txnInfo) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
Object tmpObj;
for (Enumeration e = txnInfo.keys() ; e.hasMoreElements() ;) {
String curPropName = (String)e.nextElement();
row[0] = curPropName;
tmpObj = txnInfo.get(curPropName);
row[1] = tmpObj.toString();
bcp.add(row);
}
bcp.println();
}
private void printDisplayableTxnAttrs(Hashtable txnInfo) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
Long tmpLong;
Integer tmpInt;
String tmpStr;
row[0] = ar.getString(ar.I_JMQCMD_TXN_ID);
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_ID);
row[1] = checkNullAndPrint(tmpLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_STATE);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_STATE);
row[1] = getTxnStateString(tmpInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_NUM_MSGS);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_NUM_MSGS);
row[1] = checkNullAndPrint(tmpInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_NUM_ACKS);
tmpInt = (Integer)txnInfo.get(PROP_NAME_TXN_NUM_ACKS);
row[1] = checkNullAndPrint(tmpInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_CLIENT_ID);
tmpStr = (String)txnInfo.get(PROP_NAME_TXN_CLIENTID);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_TIMESTAMP);
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_TIMESTAMP);
row[1] = checkNullAndPrintTimestamp(tmpLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_CONNECTION);
tmpStr = (String)txnInfo.get(PROP_NAME_TXN_CONNECTION);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_CONNECTION_ID);
tmpLong = (Long)txnInfo.get(PROP_NAME_TXN_CONNECTION_ID);
row[1] = checkNullAndPrint(tmpLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_USERNAME);
tmpStr = (String)txnInfo.get(PROP_NAME_TXN_USER);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_TXN_XID);
tmpStr = (String)txnInfo.get(PROP_NAME_TXN_XID);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
bcp.println();
}
private void printAllCxnAttrs(Hashtable cxnInfo) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
Object tmpObj;
for (Enumeration e = cxnInfo.keys() ; e.hasMoreElements() ;) {
String curPropName = (String)e.nextElement();
row[0] = curPropName;
tmpObj = cxnInfo.get(curPropName);
row[1] = tmpObj.toString();
bcp.add(row);
}
bcp.println();
}
private void printDisplayableCxnAttrs(Hashtable cxnInfo) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
Long tmpLong;
Integer tmpInt;
String tmpStr;
bcp.setSortNeeded(false);
row[0] = ar.getString(ar.I_JMQCMD_CXN_CXN_ID);
tmpLong = (Long)cxnInfo.get(PROP_NAME_CXN_CXN_ID);
row[1] = checkNullAndPrint(tmpLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_USER);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_USER);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_SERVICE);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_SERVICE);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_NUM_PRODUCER);
tmpInt = (Integer)cxnInfo.get(PROP_NAME_CXN_NUM_PRODUCER);
row[1] = checkNullAndPrint(tmpInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_NUM_CONSUMER);
tmpInt = (Integer)cxnInfo.get(PROP_NAME_CXN_NUM_CONSUMER);
row[1] = checkNullAndPrint(tmpInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_HOST);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_HOST);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_PORT);
tmpInt = (Integer)cxnInfo.get(PROP_NAME_CXN_PORT);
row[1] = checkNullAndPrint(tmpInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_CLIENT_ID);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_CLIENT_ID);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_CXN_CLIENT_PLATFORM);
tmpStr = (String)cxnInfo.get(PROP_NAME_CXN_CLIENT_PLATFORM);
row[1] = checkNullAndPrint(tmpStr);
bcp.add(row);
bcp.println();
}
private void printDisplayableMsgAttrs(HashMap oneMsg) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4),
titleBcp = new BrokerCmdPrinter(1, 0, "-");
String[] row = new String[2],
titleRow = new String[1];
Integer tmpInt;
bcp.setSortNeeded(false);
/*
* Message Header
*/
titleRow[0] = "Message Header Information";
titleBcp.addTitle(titleRow);
titleBcp.print();
row[0] = "Message ID";
row[1] = checkNullAndPrint(oneMsg.get("MessageID"));
bcp.add(row);
row[0] = "Correlation ID";
row[1] = checkNullAndPrint(oneMsg.get("CorrelationID"));
bcp.add(row);
row[0] = "Destination Name";
row[1] = checkNullAndPrint(oneMsg.get("DestinationName"));
bcp.add(row);
row[0] = "Destination Type";
tmpInt = (Integer)oneMsg.get("DestinationType");
row[1] = BrokerAdminUtil.getDestinationType(tmpInt.intValue());
bcp.add(row);
row[0] = "Delivery Mode";
tmpInt = (Integer)oneMsg.get("DeliveryMode");
row[1] = checkNullAndPrintDeliveryMode(tmpInt);
bcp.add(row);
row[0] = "Priority";
row[1] = checkNullAndPrint(oneMsg.get("Priority"));
bcp.add(row);
row[0] = "Redelivered";
row[1] = checkNullAndPrint(oneMsg.get("Redelivered"));
bcp.add(row);
row[0] = "Timestamp";
row[1] = checkNullAndPrintTimestamp((Long)oneMsg.get("Timestamp"));
bcp.add(row);
row[0] = "Type";
row[1] = checkNullAndPrint((String)oneMsg.get("Type"));
bcp.add(row);
row[0] = "Expiration";
row[1] = checkNullAndPrintTimestamp((Long)oneMsg.get("Expiration"));
bcp.add(row);
row[0] = "ReplyTo Destination Name";
row[1] = checkNullAndPrint(oneMsg.get("ReplyToDestinationName"));
bcp.add(row);
row[0] = "ReplyTo Destination Type";
tmpInt = (Integer)oneMsg.get("ReplyToDestinationType");
if (tmpInt != null) {
row[1] = BrokerAdminUtil.getDestinationType(tmpInt.intValue());
} else {
row[1] = "";
}
bcp.add(row);
bcp.println();
/*
* Message Properties
*/
titleBcp.clear();
titleBcp.clearTitle();
titleRow[0] = "Message Properties Information";
titleBcp.addTitle(titleRow);
titleBcp.print();
Hashtable props = (Hashtable)oneMsg.get("MessageProperties");
if (props != null) {
Enumeration keys = props.keys();
bcp.clear();
while (keys.hasMoreElements()) {
String key = (String)keys.nextElement();
Object val = (Object)props.get(key);
row[0] = key;
row[1] = val.toString();
bcp.add(row);
}
bcp.println();
} else {
Globals.stdOutPrintln("");
}
/*
* Message body
*/
titleBcp.clear();
titleBcp.clearTitle();
titleRow[0] = "Message Body Information";
titleBcp.addTitle(titleRow);
titleBcp.print();
bcp.clear();
row[0] = "Body Type";
row[1] = checkNullAndPrintMsgBodyType((Integer)oneMsg.get("MessageBodyType"), true);
bcp.add(row);
/*
row[0] = "Body Content";
row[1] = "";
bcp.add(row);
*/
bcp.println();
}
private int getDestTypeMask(BrokerCmdProperties brokerCmdProps) {
Properties props = brokerCmdProps.getTargetAttrs();
String destType = brokerCmdProps.getDestType(),
flavour;
int mask = 0;
if ((destType == null) || destType.equals("")) {
return (-1);
}
if (destType.equals(PROP_VALUE_DEST_TYPE_TOPIC)) {
mask = DestType.DEST_TYPE_TOPIC;
} else if (destType.equals(PROP_VALUE_DEST_TYPE_QUEUE)) {
mask = DestType.DEST_TYPE_QUEUE;
}
if ((props == null) || props.isEmpty()) {
return (mask);
}
flavour = props.getProperty(PROP_NAME_QUEUE_FLAVOUR);
if (flavour == null) {
return (mask);
}
if (flavour.equals(PROP_VALUE_QUEUE_FLAVOUR_SINGLE)) {
mask |= DestType.DEST_FLAVOR_SINGLE;
} else if (flavour.equals(PROP_VALUE_QUEUE_FLAVOUR_FAILOVER)) {
mask |= DestType.DEST_FLAVOR_FAILOVER;
} else if (flavour.equals(PROP_VALUE_QUEUE_FLAVOUR_ROUNDROBIN)) {
mask |= DestType.DEST_FLAVOR_RROBIN;
}
return (mask);
}
private BrokerAdmin init() {
BrokerAdmin broker;
String brokerHostPort = brokerCmdProps.getBrokerHostPort(),
brokerHostName = CommonCmdRunnerUtil.getBrokerHost(brokerHostPort),
adminUser = brokerCmdProps.getAdminUserId(),
adminPasswd;
int brokerPort = -1,
numRetries = brokerCmdProps.getNumRetries(),
receiveTimeout = brokerCmdProps.getReceiveTimeout();
boolean adminKeyUsed = brokerCmdProps.isAdminKeyUsed();
boolean useSSL = brokerCmdProps.useSSLTransportSet();
if (brokerCmdProps.adminDebugModeSet()) {
BrokerAdmin.setDebug(true);
}
try {
adminPasswd = getPasswordFromFileOrCmdLine(brokerCmdProps);
broker = new BrokerAdmin(brokerHostPort,
adminUser, adminPasswd,
(receiveTimeout * 1000), useSSL);
if (adminKeyUsed) {
broker.setAdminKeyUsed(true);
}
if (useSSL) {
broker.setSSLTransportUsed(true);
}
if (numRetries > 0) {
/*
* If the number of retries was specified, set it on the
* BrokerAdmin object.
*/
broker.setNumRetries(numRetries);
}
} catch (BrokerCmdException bce) {
handleBrokerCmdException(bce);
return (null);
} catch (CommonCmdException cce) {
handleBrokerCmdException(cce);
return (null);
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
return (null);
}
broker.addAdminEventListener(this);
return (broker);
}
private void connectToBroker(BrokerAdmin broker) throws BrokerAdminException {
broker.connect();
broker.sendHelloMessage();
broker.receiveHelloReplyMessage();
}
/*
* Prints out the appropriate error message using
* Globals.stdErrPrintln()
*/
private void handleBrokerAdminException(BrokerAdminException bae) {
CommonCmdRunnerUtil.printBrokerAdminException(bae,
OPTION_BROKER_HOSTPORT,
brokerCmdProps.debugModeSet());
}
private void handleBrokerCmdException(CommonCmdException bce) {
CommonCmdRunnerUtil.printCommonCmdException(bce);
}
private void printBrokerInfo(BrokerAdmin broker) {
CommonCmdRunnerUtil.printBrokerInfo(broker, new BrokerCmdPrinter());
}
private void printServiceInfo() {
printServiceInfo(null);
}
private void printServiceInfo(String svcName) {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(1, 4, "-");
String[] row = new String[1];
row[0] = ar.getString(ar.I_JMQCMD_SVC_NAME);
bcp.addTitle(row);
/*
* If servicename not provided, get value of '-n'.
*/
if (svcName == null) {
row[0] = brokerCmdProps.getTargetName();
} else {
row[0] = svcName;
}
bcp.add(row);
bcp.println();
}
private void printMessageInfo() {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(1, 4, "-");
String[] row = new String[1];
/*
row[0] = ar.getString(ar.I_JMQCMD_MSG_ID);
*/
row[0] = "Message ID";
bcp.addTitle(row);
row[0] = brokerCmdProps.getMsgID();
bcp.add(row);
bcp.println();
}
private void printDestinationInfo() {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4, "-");
String[] row = new String[2];
row[0] = ar.getString(ar.I_JMQCMD_DST_NAME);
row[1] = ar.getString(ar.I_JMQCMD_DST_TYPE);
bcp.addTitle(row);
row[0] = brokerCmdProps.getTargetName();
row[1] = BrokerAdminUtil.getDestinationType(getDestTypeMask(brokerCmdProps));
bcp.add(row);
bcp.println();
}
private void printDurableSubscriptionInfo() {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4, "-");
String[] row = new String[2];
row[0] = ar.getString(ar.I_JMQCMD_DUR_NAME);
row[1] = ar.getString(ar.I_JMQCMD_CLIENT_ID);
bcp.addTitle(row);
row[0] = brokerCmdProps.getTargetName();
row[1] = brokerCmdProps.getClientID();
bcp.add(row);
bcp.println();
}
private void printTransactionInfo() {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(1, 4, "-");
String[] row = new String[1];
row[0] = ar.getString(ar.I_JMQCMD_TXN_ID);
bcp.addTitle(row);
row[0] = brokerCmdProps.getTargetName();
bcp.add(row);
bcp.println();
}
private void printConnectionInfo() {
BrokerCmdPrinter bcp = new BrokerCmdPrinter(1, 4, "-");
String[] row = new String[1];
row[0] = ar.getString(ar.I_JMQCMD_CXN_CXN_ID);
bcp.addTitle(row);
row[0] = brokerCmdProps.getTargetName();
bcp.add(row);
bcp.println();
}
// Check to see if the service is an admin service.
private void isAdminService(BrokerAdmin broker, String svcName)
throws BrokerAdminException {
broker.sendGetServicesMessage(svcName);
Vector svc = broker.receiveGetServicesReplyMessage();
if ((svc != null) && (svc.size() == 1)) {
Enumeration thisEnum = svc.elements();
ServiceInfo sInfo = (ServiceInfo)thisEnum.nextElement();
if (sInfo.type == ServiceType.ADMIN)
throw new BrokerAdminException(BrokerAdminException.INVALID_OPERATION);
}
}
// Check to see if the dest type is topic.
private void isDestTypeTopic(BrokerAdmin broker, String destName)
throws BrokerAdminException {
// Query the destination first to make sure it is topic.
// First get all the destinations and check each destination's type
// until we find the one.
// We have to do this because 'query dst' requires both the name
// and type of the destination.
broker.sendGetDestinationsMessage(null, -1);
Vector dests = broker.receiveGetDestinationsReplyMessage();
boolean found = false;
int i = 0;
while ((!found) && (i < dests.size())) {
DestinationInfo dInfo = (DestinationInfo)dests.elementAt(i);
if ((destName.equals(dInfo.name)) &&
(DestType.isTopic(dInfo.type)))
found = true;
i++;
}
if (!found) {
throw new BrokerAdminException(BrokerAdminException.INVALID_OPERATION);
}
}
/*
* Not used
private String checkAndPrintUnlimitedInt(int value) {
return (checkAndPrintUnlimitedInt(value, 0));
}
*/
private String checkAndPrintUnlimitedInt(int value, int unlimitedValues[]) {
String ret = null;
for (int i = 0; i < unlimitedValues.length; ++i) {
if (value == unlimitedValues[i]) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
break;
}
}
if (ret == null) {
ret = new Integer(value).toString();
}
return (ret);
}
private String checkAndPrintUnlimitedInt(int value, int unlimitedValue) {
String ret;
if (value == unlimitedValue) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
} else {
ret = new Integer(value).toString();
}
return (ret);
}
/*
* Not used
private String checkAndPrintUnlimitedLong(long value) {
String ret;
if (value == 0) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
} else {
ret = new Long(value).toString();
}
return (ret);
}
*/
private String checkAndPrintUnlimitedLong(long value, long unlimitedValues[]) {
String ret = null;
for (int i = 0; i < unlimitedValues.length; ++i) {
if (value == unlimitedValues[i]) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
break;
}
}
if (ret == null) {
ret = new Long(value).toString();
}
return (ret);
}
private String checkAndPrintUnlimitedBytes(String s, long unlimitedValues[]) {
SizeString ss;
String ret = null, value = s.trim();
try {
ss = new SizeString(value);
} catch (Exception e) {
/*
* Should not get here
*/
return (value);
}
for (int i = 0; i < unlimitedValues.length; ++i) {
if (ss.getBytes() == unlimitedValues[i]) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
break;
}
}
if (ret == null) {
ret = value;
}
return (ret);
}
/*
* Not used
private String checkAndPrintUnlimitedBytes(String s) {
SizeString ss;
String ret, value = s.trim();
try {
ss = new SizeString(value);
} catch (Exception e) {
return (value);
}
if (ss.getBytes() == 0) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
} else {
ret = value;
}
return (ret);
}
*/
private String checkAndPrintUnlimited(String s, String unlimitedValues[]) {
String ret = null, value = s.trim();
for (int i = 0; i < unlimitedValues.length; ++i) {
if (value.equals(unlimitedValues[i])) {
ret = ar.getString(ar.I_UNLIMITED) + " (-1)";
break;
}
}
if (ret == null) {
ret = value;
}
return (ret);
}
private String checkNullAndPrint(Object obj) {
return CommonCmdRunnerUtil.checkNullAndReturnPrint(obj);
}
private String checkNullAndPrintTimestamp(Long timestamp) {
return CommonCmdRunnerUtil.checkNullAndReturnPrintTimestamp(timestamp);
}
/*
* Returns an integer representing the metric type.
* If the metric type is not specified, the totals
* metrics is assumed.
*/
private int getMetricType(BrokerCmdProperties brokerCmdProps) {
String s = brokerCmdProps.getMetricType(),
commandArg = brokerCmdProps.getCommandArg();
if (s == null) {
return (METRICS_TOTALS);
}
if (s.equals(PROP_VALUE_METRICS_TOTALS)) {
return (METRICS_TOTALS);
} else if (s.equals(PROP_VALUE_METRICS_RATES)) {
return (METRICS_RATES);
} else if (s.equals(PROP_VALUE_METRICS_CONNECTIONS)) {
return (METRICS_CONNECTIONS);
} else if (s.equals(PROP_VALUE_METRICS_CONSUMER)) {
return (METRICS_CONSUMER);
} else if (s.equals(PROP_VALUE_METRICS_DISK)) {
return (METRICS_DISK);
} else if (s.equals(PROP_VALUE_METRICS_REMOVE)) {
return (METRICS_REMOVE);
}
return (METRICS_TOTALS);
}
/*
* Prompts for authentication and stores the missing username/password.
*/
private BrokerAdmin promptForAuthentication(BrokerAdmin broker) {
return (BrokerAdmin)CommonCmdRunnerUtil.promptForAuthentication(broker);
}
private boolean reconnectToBroker(BrokerAdmin broker) {
boolean connected = false;
int count = 0;
while (!connected && (count < broker.getNumRetries())) {
try {
broker.connect();
broker.sendHelloMessage();
broker.receiveHelloReplyMessage();
connected = true;
} catch (BrokerAdminException baex) {
// try to reconnect based on RECONNECT attributes
if (baex.getType() == BrokerAdminException.CONNECT_ERROR) {
try {
Thread.sleep(broker.getTimeout());
count++;
} catch (InterruptedException ie) {
connected = false;
}
} else {
connected = false;
}
} catch (Exception ex) {
connected = false;
}
if (count >= broker.getNumRetries()) {
connected = false;
Globals.stdErrPrintln(ar.getString(ar.E_JMQCMD_CONNECT_ERROR,
broker.getBrokerHost(), broker.getBrokerPort()));
Globals.stdErrPrintln(ar.getString(ar.E_MAX_RECONNECT_REACHED,
new Long(broker.getTimeout()*broker.getNumRetries() / 1000)));
}
}
return connected;
}
private static Properties convertQueueDeliveryPolicy
(Properties targetAttrs) {
String deliveryValue =
targetAttrs.getProperty(PROP_NAME_BKR_QUEUE_DELIVERY_POLICY);
if (PROP_VALUE_QUEUE_FLAVOUR_SINGLE.equals(deliveryValue)) {
targetAttrs.setProperty(PROP_NAME_BKR_QUEUE_DELIVERY_POLICY,
PROP_NAME_QUEUE_FLAVOUR_SINGLE);
} else if (PROP_VALUE_QUEUE_FLAVOUR_FAILOVER.equals(deliveryValue)) {
targetAttrs.setProperty(PROP_NAME_BKR_QUEUE_DELIVERY_POLICY,
PROP_NAME_QUEUE_FLAVOUR_FAILOVER);
} else if (PROP_VALUE_QUEUE_FLAVOUR_ROUNDROBIN.equals(deliveryValue)) {
targetAttrs.setProperty(PROP_NAME_BKR_QUEUE_DELIVERY_POLICY,
PROP_NAME_QUEUE_FLAVOUR_ROUNDROBIN);
} else {
// Should not get here, as the value has already been validated
}
return targetAttrs;
}
private String getDisplayableQueueDeliveryPolicy(String deliveryValue) {
if (PROP_NAME_QUEUE_FLAVOUR_SINGLE.equals(deliveryValue)) {
return (ar.getString(ar.I_SINGLE));
} else if (PROP_NAME_QUEUE_FLAVOUR_FAILOVER.equals(deliveryValue)) {
return (ar.getString(ar.I_FAILOVER));
} else if (PROP_NAME_QUEUE_FLAVOUR_ROUNDROBIN.equals(deliveryValue)) {
return (ar.getString(ar.I_RROBIN));
} else {
// Should not get here, as the value has already been validated
return (ar.getString(ar.I_UNKNOWN));
}
}
private int getPauseTypeVal(String destStateStr) {
int ret = DestState.UNKNOWN;
if (destStateStr == null)
return (ret);
if (destStateStr.equals(PROP_VALUE_PAUSETYPE_ALL)) {
ret = DestState.PAUSED;
} else if (destStateStr.equals(PROP_VALUE_PAUSETYPE_PRODUCERS)) {
ret = DestState.PRODUCERS_PAUSED;
} else if (destStateStr.equals(PROP_VALUE_PAUSETYPE_CONSUMERS)) {
ret = DestState.CONSUMERS_PAUSED;
}
return (ret);
}
private String getResetTypeVal(String resetType) {
if ((resetType == null) || (resetType.equals("")))
return (null);
if (resetType.equals(PROP_VALUE_RESETTYPE_METRICS)) {
return (MessageType.JMQ_METRICS);
}
/*
* If "ALL" was specified, not setting reset type is OK
* the admin protocol treats this as "ALL".
*/
return (null);
}
private int getLimitBehavValue(String limitBehavStr) {
int ret = DestLimitBehavior.UNKNOWN;
if (limitBehavStr == null)
return (ret);
if (limitBehavStr.equals(LIMIT_BEHAV_FLOW_CONTROL)) {
ret = DestLimitBehavior.FLOW_CONTROL;
} else if (limitBehavStr.equals(LIMIT_BEHAV_RM_OLDEST)) {
ret = DestLimitBehavior.REMOVE_OLDEST;
} else if (limitBehavStr.equals(LIMIT_BEHAV_REJECT_NEWEST)) {
ret = DestLimitBehavior.REJECT_NEWEST;
} else if (limitBehavStr.equals(LIMIT_BEHAV_RM_LOW_PRIORITY)) {
ret = DestLimitBehavior.REMOVE_LOW_PRIORITY;
}
return (ret);
}
private int getClusterDeliveryPolicy(String cdp) {
int ret = ClusterDeliveryPolicy.UNKNOWN;
if (cdp == null)
return (ret);
boolean b = Boolean.valueOf(cdp).booleanValue();
if (b) {
ret = ClusterDeliveryPolicy.LOCAL_PREFERRED;
} else {
ret = ClusterDeliveryPolicy.DISTRIBUTED;
}
return (ret);
}
/*
* Get password from either the passfile or -p option.
* In some future release, the -p option will go away
* leaving the passfile the only way to specify the
* password (besides prompting the user for it).
* -p has higher precendence compared to -passfile.
*/
private String getPasswordFromFileOrCmdLine(BrokerCmdProperties brokerCmdProps)
throws CommonCmdException {
String passwd = brokerCmdProps.getAdminPasswd(),
passfile = brokerCmdProps.getAdminPassfile();
if (passwd != null) {
return (passwd);
}
return CommonCmdRunnerUtil.getPasswordFromFile(passfile, PROP_NAME_PASSFILE_PASSWD, brokerCmdProps);
}
private String checkNullAndPrintDeliveryMode(Integer deliveryMode) {
if (deliveryMode != null) {
String val;
switch (deliveryMode.intValue()) {
case DeliveryMode.NON_PERSISTENT:
val = "NON_PERSISTENT";
break;
case DeliveryMode.PERSISTENT:
val = "PERSISTENT";
break;
default:
val = "Unknown";
}
return (val + " (" + deliveryMode.intValue() + ")");
} else {
return ("");
}
}
private String checkNullAndPrintMsgBodyType(Integer bodyType, boolean includeValue) {
if (bodyType != null) {
String label = null;
switch (bodyType.intValue()) {
case 1:
label = "TextMessage";
break;
case 2:
label = "BytesMessage";
break;
case 3:
label = "MapMessage";
break;
case 4:
label = "StreamMessage";
break;
case 5:
label = "ObjectMessage";
break;
default:
label = "Unknown";
}
if (includeValue)
return (label + " (" + bodyType.intValue() + ")");
return (label);
} else {
return ("");
}
}
}