Пример #1
0
  private void checkIfNodeIdentifierIsDefault(final OperationContext context, final ModelNode model)
      throws OperationFailedException {
    final String nodeIdentifier =
        TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER
            .resolveModelAttribute(context, model)
            .asString();
    final String defaultNodeIdentifier =
        TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER.getDefaultValue().asString();

    if (defaultNodeIdentifier.equals(nodeIdentifier)) {
      TransactionLogger.ROOT_LOGGER.nodeIdentifierIsSetToDefault();
    }
  }
Пример #2
0
  private void populateModelWithCoreEnvConfig(ModelNode operation, ModelNode model)
      throws OperationFailedException {
    // core environment
    TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER.validateAndSet(operation, model);

    // We have some complex logic for the 'process-id' stuff because of the alternatives
    if (operation.hasDefined(TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName())
        && operation
            .get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName())
            .asBoolean()) {
      TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.validateAndSet(operation, model);
      if (operation.hasDefined(
          TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())) {
        throw new OperationFailedException(
            String.format(
                "%s must be undefined if %s is 'true'.",
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName(),
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName()));
      } else if (operation.hasDefined(
          TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())) {
        throw new OperationFailedException(
            String.format(
                "%s must be undefined if %s is 'true'.",
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName(),
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName()));
      }
      // model.get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName());
      // model.get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName());
    } else if (operation.hasDefined(
        TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())) {
      TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.validateAndSet(
          operation, model);
      TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.validateAndSet(
          operation, model);
    } else if (operation.hasDefined(
        TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())) {
      throw new OperationFailedException(
          String.format(
              "%s must be defined if %s is defined.",
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName(),
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName()));
    } else {
      // not uuid and also not sockets!
      throw new OperationFailedException(
          String.format(
              "Either %s must be 'true' or  %s must be defined.",
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName(),
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName()));
    }
  }
Пример #3
0
  private void performCoreEnvironmentBootTime(OperationContext context, ModelNode coreEnvModel)
      throws OperationFailedException {

    // Configure the core configuration.
    final String nodeIdentifier =
        TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER
            .resolveModelAttribute(context, coreEnvModel)
            .asString();
    TransactionLogger.ROOT_LOGGER.debugf("nodeIdentifier=%s%n", nodeIdentifier);
    final CoreEnvironmentService coreEnvironmentService =
        new CoreEnvironmentService(nodeIdentifier);

    String socketBindingName = null;
    if (TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID
        .resolveModelAttribute(context, coreEnvModel)
        .asBoolean(false)) {
      // Use the UUID based id
      UuidProcessId id = new UuidProcessId();
      coreEnvironmentService.setProcessImplementation(id);
    } else {
      // Use the socket process id
      coreEnvironmentService.setProcessImplementationClassName(ProcessIdType.SOCKET.getClazz());
      socketBindingName =
          TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING
              .resolveModelAttribute(context, coreEnvModel)
              .asString();
      int ports =
          TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS
              .resolveModelAttribute(context, coreEnvModel)
              .asInt();
      coreEnvironmentService.setSocketProcessIdMaxPorts(ports);
    }

    final ServiceBuilder<?> coreEnvBuilder =
        context
            .getServiceTarget()
            .addService(TxnServices.JBOSS_TXN_CORE_ENVIRONMENT, coreEnvironmentService);
    if (socketBindingName != null) {
      // Add a dependency on the socket id binding
      ServiceName bindingName = SocketBinding.JBOSS_BINDING_NAME.append(socketBindingName);
      coreEnvBuilder.addDependency(
          bindingName,
          SocketBinding.class,
          coreEnvironmentService.getSocketProcessBindingInjector());
    }
    coreEnvBuilder.setInitialMode(ServiceController.Mode.ACTIVE).install();
  }
Пример #4
0
  private void performCoordinatorEnvBoottime(
      OperationContext context, ModelNode coordEnvModel, final boolean jts)
      throws OperationFailedException {

    final boolean coordinatorEnableStatistics =
        TransactionSubsystemRootResourceDefinition.STATISTICS_ENABLED
            .resolveModelAttribute(context, coordEnvModel)
            .asBoolean();
    final boolean transactionStatusManagerEnable =
        TransactionSubsystemRootResourceDefinition.ENABLE_TSM_STATUS
            .resolveModelAttribute(context, coordEnvModel)
            .asBoolean();
    final int coordinatorDefaultTimeout =
        TransactionSubsystemRootResourceDefinition.DEFAULT_TIMEOUT
            .resolveModelAttribute(context, coordEnvModel)
            .asInt();

    final String nodeIdentifier =
        TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER
            .resolveModelAttribute(context, coordEnvModel)
            .asString();

    // install JTA environment bean service
    final JTAEnvironmentBeanService jtaEnvironmentBeanService =
        new JTAEnvironmentBeanService(nodeIdentifier);
    context
        .getServiceTarget()
        .addService(TxnServices.JBOSS_TXN_JTA_ENVIRONMENT, jtaEnvironmentBeanService)
        .setInitialMode(Mode.ACTIVE)
        .install();

    final ArjunaTransactionManagerService transactionManagerService =
        new ArjunaTransactionManagerService(
            coordinatorEnableStatistics,
            coordinatorDefaultTimeout,
            transactionStatusManagerEnable,
            jts);
    final ServiceBuilder<com.arjuna.ats.jbossatx.jta.TransactionManagerService>
        transactionManagerServiceServiceBuilder =
            context
                .getServiceTarget()
                .addService(
                    TxnServices.JBOSS_TXN_ARJUNA_TRANSACTION_MANAGER, transactionManagerService);
    // add dependency on JTA environment bean service
    transactionManagerServiceServiceBuilder.addDependency(
        TxnServices.JBOSS_TXN_JTA_ENVIRONMENT,
        JTAEnvironmentBean.class,
        transactionManagerService.getJTAEnvironmentBeanInjector());

    // if jts is enabled we need the ORB
    if (jts) {
      transactionManagerServiceServiceBuilder.addDependency(
          ServiceName.JBOSS.append("iiop-openjdk", "orb-service"),
          ORB.class,
          transactionManagerService.getOrbInjector());
      transactionManagerServiceServiceBuilder.addDependency(CorbaNamingService.SERVICE_NAME);
    }

    transactionManagerServiceServiceBuilder
        .addDependency(
            TxnServices.JBOSS_TXN_XA_TERMINATOR,
            JBossXATerminator.class,
            transactionManagerService.getXaTerminatorInjector())
        .addDependency(
            TxnServices.JBOSS_TXN_USER_TRANSACTION_REGISTRY,
            UserTransactionRegistry.class,
            transactionManagerService.getUserTransactionRegistry())
        .addDependency(TxnServices.JBOSS_TXN_CORE_ENVIRONMENT)
        .addDependency(TxnServices.JBOSS_TXN_ARJUNA_OBJECTSTORE_ENVIRONMENT)
        .addDependency(TxnServices.JBOSS_TXN_ARJUNA_RECOVERY_MANAGER)
        .setInitialMode(ServiceController.Mode.ACTIVE)
        .install();
  }