Search in sources :

Example 11 with ConnectionManager

use of com.sun.messaging.jmq.jmsserver.service.ConnectionManager in project openmq by eclipse-ee4j.

the class DestroyConnectionsHandler method handle.

/**
 * Handle the incomming administration message.
 *
 * @param con The Connection the message came in on.
 * @param cmd_msg The administration message
 * @param cmd_props The properties from the administration message
 */
@Override
public boolean handle(IMQConnection con, Packet cmd_msg, Hashtable cmd_props) {
    if (DEBUG) {
        logger.log(Logger.DEBUG, this.getClass().getName() + ": " + "DestroyConnections: " + cmd_props);
    }
    ConnectionManager cm = Globals.getConnectionManager();
    // String serviceName = (String)cmd_props.get(MessageType.JMQ_SERVICE_NAME);
    Long cxnId = (Long) cmd_props.get(MessageType.JMQ_CONNECTION_ID);
    int status = Status.OK;
    String errMsg = null;
    HAMonitorService hamonitor = Globals.getHAMonitorService();
    if (hamonitor != null && hamonitor.inTakeover()) {
        status = Status.ERROR;
        errMsg = rb.getString(rb.E_CANNOT_PROCEED_TAKEOVER_IN_PROCESS);
        logger.log(Logger.ERROR, this.getClass().getName() + ": " + errMsg);
    }
    if (status == Status.OK) {
        IMQConnection cxn = null;
        if (cxnId != null) {
            logger.log(Logger.INFO, BrokerResources.I_DESTROY_CXN, String.valueOf(cxnId.longValue()));
            // Get info for one connection
            cxn = (IMQConnection) cm.getConnection(new ConnectionUID(cxnId.longValue()));
            if (cxn != null) {
                if (DEBUG) {
                    cxn.dump();
                }
                cxn.destroyConnection(true, GoodbyeReason.ADMIN_KILLED_CON, Globals.getBrokerResources().getKString(BrokerResources.M_ADMIN_REQ_CLOSE));
            } else {
                status = Status.NOT_FOUND;
                errMsg = rb.getString(rb.E_NO_SUCH_CONNECTION, String.valueOf(cxnId.longValue()));
            }
        }
    }
    // Send reply
    Packet reply = new Packet(con.useDirectBuffers());
    reply.setPacketType(PacketType.OBJECT_MESSAGE);
    setProperties(reply, MessageType.DESTROY_CONNECTION_REPLY, status, errMsg);
    parent.sendReply(con, cmd_msg, reply);
    return true;
}
Also used : ConnectionManager(com.sun.messaging.jmq.jmsserver.service.ConnectionManager) IMQConnection(com.sun.messaging.jmq.jmsserver.service.imq.IMQConnection) ConnectionUID(com.sun.messaging.jmq.jmsserver.service.ConnectionUID) HAMonitorService(com.sun.messaging.jmq.jmsserver.cluster.api.ha.HAMonitorService)

Example 12 with ConnectionManager

use of com.sun.messaging.jmq.jmsserver.service.ConnectionManager in project openmq by eclipse-ee4j.

the class GetConnectionsHandler method handle.

/**
 * Handle the incomming administration message.
 *
 * @param con The Connection the message came in on.
 * @param cmd_msg The administration message
 * @param cmd_props The properties from the administration message
 */
@Override
public boolean handle(IMQConnection con, Packet cmd_msg, Hashtable cmd_props) {
    if (DEBUG) {
        logger.log(Logger.DEBUG, this.getClass().getName() + ": " + "GetConnections: " + cmd_props);
    }
    ConnectionManager cm = Globals.getConnectionManager();
    String serviceName = (String) cmd_props.get(MessageType.JMQ_SERVICE_NAME);
    Long cxnId = (Long) cmd_props.get(MessageType.JMQ_CONNECTION_ID);
    int status = Status.OK;
    String errMsg = null;
    Vector v = new Vector();
    Service s = null;
    if (serviceName != null) {
        s = Globals.getServiceManager().getService(serviceName);
        if (s == null) {
            status = Status.NOT_FOUND;
            errMsg = rb.getString(rb.X_NO_SUCH_SERVICE, serviceName);
        }
    }
    if (status == Status.OK) {
        ConnectionInfo cxnInfo = null;
        IMQConnection cxn = null;
        if (cxnId != null) {
            // Get info for one connection
            cxn = (IMQConnection) cm.getConnection(new ConnectionUID(cxnId.longValue()));
            if (cxn != null) {
                if (DEBUG) {
                    cxn.dump();
                }
                cxnInfo = cxn.getConnectionInfo();
                v.add(getConnectionInfoHashtable(cxnInfo));
            } else {
                status = Status.NOT_FOUND;
                errMsg = rb.getString(rb.E_NO_SUCH_CONNECTION, String.valueOf(cxnId.longValue()));
            }
        } else {
            // Get info for all connections on a service
            List connections = cm.getConnectionList(s);
            Iterator itr = connections.iterator();
            while (itr.hasNext()) {
                cxn = (IMQConnection) itr.next();
                cxnInfo = cxn.getConnectionInfo();
                v.add(getConnectionInfoHashtable(cxnInfo));
            }
        }
    }
    // Send reply
    Packet reply = new Packet(con.useDirectBuffers());
    reply.setPacketType(PacketType.OBJECT_MESSAGE);
    setProperties(reply, MessageType.GET_CONNECTIONS_REPLY, status, errMsg);
    setBodyObject(reply, v);
    parent.sendReply(con, cmd_msg, reply);
    return true;
}
Also used : ConnectionManager(com.sun.messaging.jmq.jmsserver.service.ConnectionManager) IMQConnection(com.sun.messaging.jmq.jmsserver.service.imq.IMQConnection) Iterator(java.util.Iterator) Service(com.sun.messaging.jmq.jmsserver.service.Service) ConnectionUID(com.sun.messaging.jmq.jmsserver.service.ConnectionUID) List(java.util.List) ConnectionInfo(com.sun.messaging.jmq.util.admin.ConnectionInfo) Vector(java.util.Vector)

Aggregations

ConnectionManager (com.sun.messaging.jmq.jmsserver.service.ConnectionManager)12 ConnectionUID (com.sun.messaging.jmq.jmsserver.service.ConnectionUID)9 IMQConnection (com.sun.messaging.jmq.jmsserver.service.imq.IMQConnection)8 List (java.util.List)5 Service (com.sun.messaging.jmq.jmsserver.service.Service)4 ConnectionInfo (com.sun.messaging.jmq.util.admin.ConnectionInfo)4 ArrayList (java.util.ArrayList)4 BrokerResources (com.sun.messaging.jmq.jmsserver.resources.BrokerResources)2 IMQBasicConnection (com.sun.messaging.jmq.jmsserver.service.imq.IMQBasicConnection)2 Logger (com.sun.messaging.jmq.util.log.Logger)2 Iterator (java.util.Iterator)2 HAMonitorService (com.sun.messaging.jmq.jmsserver.cluster.api.ha.HAMonitorService)1 Connection (com.sun.messaging.jmq.jmsserver.service.Connection)1 MetricManager (com.sun.messaging.jmq.jmsserver.service.MetricManager)1 ServiceManager (com.sun.messaging.jmq.jmsserver.service.ServiceManager)1 IMQService (com.sun.messaging.jmq.jmsserver.service.imq.IMQService)1 ServiceInfo (com.sun.messaging.jmq.util.admin.ServiceInfo)1 Vector (java.util.Vector)1