Search in sources :

Example 1 with ActiveMQServerControl

use of org.apache.activemq.artemis.api.core.management.ActiveMQServerControl in project wildfly by wildfly.

the class ActiveMQServerControlHandler method executeRuntimeStep.

@Override
protected void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException {
    final String operationName = operation.require(OP).asString();
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    if (READ_ATTRIBUTE_OPERATION.equals(operationName)) {
        ActiveMQServer server = null;
        if (context.getRunningMode() == RunningMode.NORMAL) {
            ServiceController<?> service = context.getServiceRegistry(false).getService(serviceName);
            if (service == null || service.getState() != ServiceController.State.UP) {
                throw MessagingLogger.ROOT_LOGGER.activeMQServerNotInstalled(serviceName.getSimpleName());
            }
            server = ActiveMQServer.class.cast(service.getValue());
        }
        handleReadAttribute(context, operation, server);
        return;
    }
    if (rollbackOperationIfServerNotActive(context, operation)) {
        return;
    }
    final ActiveMQServerControl serverControl = getServerControl(context, operation);
    try {
        if (GET_CONNECTORS_AS_JSON.equals(operationName)) {
            String json = serverControl.getConnectorsAsJSON();
            context.getResult().set(json);
        } else if (RESET_ALL_MESSAGE_COUNTERS.equals(operationName)) {
            serverControl.resetAllMessageCounters();
            context.getResult();
        } else if (RESET_ALL_MESSAGE_COUNTER_HISTORIES.equals(operationName)) {
            serverControl.resetAllMessageCounterHistories();
            context.getResult();
        } else if (LIST_PREPARED_TRANSACTIONS.equals(operationName)) {
            String[] list = serverControl.listPreparedTransactions();
            reportListOfStrings(context, list);
        } else if (LIST_PREPARED_TRANSACTION_DETAILS_AS_JSON.equals(operationName)) {
            String json = serverControl.listPreparedTransactionDetailsAsJSON();
            context.getResult().set(json);
        } else if (LIST_PREPARED_TRANSACTION_DETAILS_AS_HTML.equals(operationName)) {
            String html = serverControl.listPreparedTransactionDetailsAsHTML();
            context.getResult().set(html);
        } else if (LIST_HEURISTIC_COMMITTED_TRANSACTIONS.equals(operationName)) {
            String[] list = serverControl.listHeuristicCommittedTransactions();
            reportListOfStrings(context, list);
        } else if (LIST_HEURISTIC_ROLLED_BACK_TRANSACTIONS.equals(operationName)) {
            String[] list = serverControl.listHeuristicRolledBackTransactions();
            reportListOfStrings(context, list);
        } else if (COMMIT_PREPARED_TRANSACTION.equals(operationName)) {
            String txId = TRANSACTION_AS_BASE_64.resolveModelAttribute(context, operation).asString();
            boolean committed = serverControl.commitPreparedTransaction(txId);
            context.getResult().set(committed);
        } else if (ROLLBACK_PREPARED_TRANSACTION.equals(operationName)) {
            String txId = TRANSACTION_AS_BASE_64.resolveModelAttribute(context, operation).asString();
            boolean committed = serverControl.rollbackPreparedTransaction(txId);
            context.getResult().set(committed);
        } else if (LIST_REMOTE_ADDRESSES.equals(operationName)) {
            ModelNode address = OPTIONAL_IP_ADDRESS.resolveModelAttribute(context, operation);
            String[] list = address.isDefined() ? serverControl.listRemoteAddresses(address.asString()) : serverControl.listRemoteAddresses();
            reportListOfStrings(context, list);
        } else if (CLOSE_CONNECTIONS_FOR_ADDRESS.equals(operationName)) {
            String address = REQUIRED_IP_ADDRESS.resolveModelAttribute(context, operation).asString();
            boolean closed = serverControl.closeConnectionsForAddress(address);
            context.getResult().set(closed);
        } else if (CLOSE_CONNECTIONS_FOR_USER.equals(operationName)) {
            String user = USER.resolveModelAttribute(context, operation).asString();
            boolean closed = serverControl.closeConnectionsForUser(user);
            context.getResult().set(closed);
        } else if (CLOSE_CONSUMER_CONNECTIONS_FOR_ADDRESS.equals(operationName)) {
            String address = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            boolean closed = serverControl.closeConsumerConnectionsForAddress(address);
            context.getResult().set(closed);
        } else if (LIST_CONNECTION_IDS.equals(operationName)) {
            String[] list = serverControl.listConnectionIDs();
            reportListOfStrings(context, list);
        } else if (LIST_PRODUCERS_INFO_AS_JSON.equals(operationName)) {
            String json = serverControl.listProducersInfoAsJSON();
            context.getResult().set(json);
        } else if (LIST_SESSIONS.equals(operationName)) {
            String connectionID = CONNECTION_ID.resolveModelAttribute(context, operation).asString();
            String[] list = serverControl.listSessions(connectionID);
            reportListOfStrings(context, list);
        } else if (GET_ROLES.equals(operationName)) {
            String addressMatch = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            String json = serverControl.getRolesAsJSON(addressMatch);
            reportRoles(context, json);
        } else if (GET_ROLES_AS_JSON.equals(operationName)) {
            String addressMatch = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            String json = serverControl.getRolesAsJSON(addressMatch);
            reportRolesAsJSON(context, json);
        } else if (GET_ADDRESS_SETTINGS_AS_JSON.equals(operationName)) {
            String addressMatch = ADDRESS_MATCH.resolveModelAttribute(context, operation).asString();
            String json = serverControl.getAddressSettingsAsJSON(addressMatch);
            context.getResult().set(json);
        } else if (FORCE_FAILOVER.equals(operationName)) {
            serverControl.forceFailover();
            context.getResult();
        } else {
            // Bug
            throw MessagingLogger.ROOT_LOGGER.unsupportedOperation(operationName);
        }
    } catch (RuntimeException e) {
        throw e;
    } catch (Exception e) {
        context.getFailureDescription().set(e.getLocalizedMessage());
    }
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ActiveMQServerControl(org.apache.activemq.artemis.api.core.management.ActiveMQServerControl) ServiceName(org.jboss.msc.service.ServiceName) ModelNode(org.jboss.dmr.ModelNode) OperationFailedException(org.jboss.as.controller.OperationFailedException)

Example 2 with ActiveMQServerControl

use of org.apache.activemq.artemis.api.core.management.ActiveMQServerControl in project wildfly by wildfly.

the class BridgeAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    ServiceRegistry registry = context.getServiceRegistry(true);
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    ServiceController<?> service = registry.getService(serviceName);
    if (service != null) {
        // The original subsystem initialization is complete; use the control object to create the divert
        if (service.getState() != ServiceController.State.UP) {
            throw MessagingLogger.ROOT_LOGGER.invalidServiceState(serviceName, ServiceController.State.UP, service.getState());
        }
        final String name = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)).getLastElement().getValue();
        BridgeConfiguration bridgeConfig = createBridgeConfiguration(context, name, model);
        ActiveMQServerControl serverControl = ActiveMQServer.class.cast(service.getValue()).getActiveMQServerControl();
        createBridge(name, bridgeConfig, serverControl);
    }
// else the initial subsystem install is not complete; MessagingSubsystemAdd will add a
// handler that calls addBridgeConfigs
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ActiveMQServerControl(org.apache.activemq.artemis.api.core.management.ActiveMQServerControl) ServiceName(org.jboss.msc.service.ServiceName) BridgeConfiguration(org.apache.activemq.artemis.core.config.BridgeConfiguration) ServiceRegistry(org.jboss.msc.service.ServiceRegistry)

Example 3 with ActiveMQServerControl

use of org.apache.activemq.artemis.api.core.management.ActiveMQServerControl in project wildfly by wildfly.

the class DivertAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    ServiceRegistry registry = context.getServiceRegistry(true);
    final ServiceName serviceName = MessagingServices.getActiveMQServiceName(PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)));
    ServiceController<?> service = registry.getService(serviceName);
    if (service != null) {
        // The original subsystem initialization is complete; use the control object to create the divert
        if (service.getState() != ServiceController.State.UP) {
            throw MessagingLogger.ROOT_LOGGER.invalidServiceState(serviceName, ServiceController.State.UP, service.getState());
        }
        final String name = PathAddress.pathAddress(operation.require(ModelDescriptionConstants.OP_ADDR)).getLastElement().getValue();
        DivertConfiguration divertConfiguration = createDivertConfiguration(context, name, model);
        ActiveMQServerControl serverControl = ActiveMQServer.class.cast(service.getValue()).getActiveMQServerControl();
        createDivert(name, divertConfiguration, serverControl);
    }
// else the initial subsystem install is not complete; MessagingSubsystemAdd will add a
// handler that calls addDivertConfigs
}
Also used : ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ActiveMQServerControl(org.apache.activemq.artemis.api.core.management.ActiveMQServerControl) ServiceName(org.jboss.msc.service.ServiceName) DivertConfiguration(org.apache.activemq.artemis.core.config.DivertConfiguration) ServiceRegistry(org.jboss.msc.service.ServiceRegistry)

Aggregations

ActiveMQServerControl (org.apache.activemq.artemis.api.core.management.ActiveMQServerControl)3 ActiveMQServer (org.apache.activemq.artemis.core.server.ActiveMQServer)3 ServiceName (org.jboss.msc.service.ServiceName)3 ServiceRegistry (org.jboss.msc.service.ServiceRegistry)2 BridgeConfiguration (org.apache.activemq.artemis.core.config.BridgeConfiguration)1 DivertConfiguration (org.apache.activemq.artemis.core.config.DivertConfiguration)1 OperationFailedException (org.jboss.as.controller.OperationFailedException)1 ModelNode (org.jboss.dmr.ModelNode)1